(self["webpackChunknewfront"]=self["webpackChunknewfront"]||[]).push([[663],{32:function(t,e,n){n(4114),n(8111),n(116),n(1701);const l="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],r=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],o=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],d=[].concat(o,c,s,r);function u(t){return t?"string"===typeof t?t:t.source:null}function h(t){return m("(?=",t,")")}function m(...t){const e=t.map((t=>u(t))).join("");return e}function U(t){const e=(t,{after:e})=>{const n="",end:""},r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(t,n)=>{const l=t[0].length+t.index,i=t.input[l];"<"!==i?">"===i&&(e(t,{after:l})||n.ignoreMatch()):n.ignoreMatch()}},o={$pattern:l,keyword:i,literal:a,built_in:d},c="[0-9](_?[0-9])*",u=`\\.(${c})`,U="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${U})((${u})|\\.)?|(${u}))[eE][+-]?(${c})\\b`},{begin:`\\b(${U})\\b((${u})\\b|\\.)?|(${u})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},F={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},b={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,F],subLanguage:"xml"}},Z={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,F],subLanguage:"css"}},N={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,F]},R=t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[R,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},W=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,b,Z,N,p,t.REGEXP_MODE];F.contains=W.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(W)});const V=[].concat(S,F.contains),Q=V.concat([{begin:/\(/,end:/\)/,keywords:o,contains:["self"].concat(V)}]),y={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:Q};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:Q},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,b,Z,N,S,p,{begin:m(/[{,\n]\s*/,h(m(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,n+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:n+h("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[S,t.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:Q}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:s.begin,end:s.end},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:o,contains:["self",t.inherit(t.TITLE_MODE,{begin:n}),y],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[y,t.inherit(t.TITLE_MODE,{begin:n})]},{variants:[{begin:"\\."+n},{begin:"\\$"+n}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:n}),"self",y]},{begin:"(get|set)\\s+(?="+n+"\\()",end:/\{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:n}),{begin:/\(\)/},y]},{begin:/\$[(.]/}]}}function p(t){const e=l,n={beginKeywords:"namespace",end:/\{/,excludeEnd:!0},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},r={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},o=["any","void","number","boolean","string","object","never","enum"],c=["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"],u={$pattern:l,keyword:i.concat(c),literal:a,built_in:d.concat(o)},h={className:"meta",begin:"@"+e},m=(t,e,n)=>{const l=t.contains.findIndex((t=>t.label===e));if(-1===l)throw new Error("can not find mode to replace");t.contains.splice(l,1,n)},p=U(t);Object.assign(p.keywords,u),p.exports.PARAMS_CONTAINS.push(h),p.contains=p.contains.concat([h,n,s]),m(p,"shebang",t.SHEBANG()),m(p,"use_strict",r);const F=p.contains.find((t=>"function"===t.className));return F.relevance=0,Object.assign(p,{name:"TypeScript",aliases:["ts","tsx"]}),p}t.exports=p},134:function(t){function e(t){const e={className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\(/,end:/\)/,contains:["self",{begin:/\\./}]}],relevance:10},n={className:"keyword",begin:/\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,end:/\(/,excludeEnd:!0},l={className:"variable",begin:/%[_a-zA-Z0-9:]*/,end:"%"},i={className:"symbol",begin:/\\./};return{name:"Tagger Script",contains:[e,n,l,i]}}t.exports=e},155:function(t){function e(t){const e="module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update",n="item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration",l="eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN",i={className:"built_in",variants:[{begin:/\barray:/,end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/},{begin:/\bmap:/,end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{begin:/\bmath:/,end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0},{begin:/[^/,end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/,subLanguage:"xquery"},"self"]},m=[s,i,o,r,d,c,a,u,h];return{name:"XQuery",aliases:["xpath","xq"],case_insensitive:!1,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/,keyword:e,type:n,literal:l},contains:m}}t.exports=e},171:function(t){function e(t){const e=t.COMMENT(/\{/,/\}/,{contains:["self"]});return{name:"Parser3",subLanguage:"xml",relevance:0,contains:[t.COMMENT("^#","$"),t.COMMENT(/\^rem\{/,/\}/,{relevance:10,contains:[e]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",relevance:10},{className:"title",begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{className:"variable",begin:/\$\{?[\w\-.:]+\}?/},{className:"keyword",begin:/\^[\w\-.:]+/},{className:"number",begin:"\\^#[0-9a-fA-F]+"},t.C_NUMBER_MODE]}}t.exports=e},236:function(t){function e(t){const e="foreach do while for if from to step else on-error and or not in",n="global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime",l="add remove enable disable set get print export edit find run debug error info warning",i="true false yes no nothing nil null",a="traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw",s={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,s,{className:"variable",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]}]},o={className:"string",begin:/'/,end:/'/};return{name:"Microtik RouterOS script",aliases:["mikrotik"],case_insensitive:!0,keywords:{$pattern:/:?[\w-]+/,literal:i,keyword:e+" :"+e.split(" ").join(" :")+" :"+n.split(" ").join(" :")},contains:[{variants:[{begin:/\/\*/,end:/\*\//},{begin:/\/\//,end:/$/},{begin:/<\//,end:/>/}],illegal:/./},t.COMMENT("^#","$"),r,o,s,{begin:/[\w-]+=([^\s{}[\]()>]+)/,relevance:0,returnBegin:!0,contains:[{className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,contains:[r,o,s,{className:"literal",begin:"\\b("+i.split(" ").join("|")+")\\b"},{begin:/("[^"]*"|[^\s{}[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/},{begin:"\\b("+l.split(" ").join("|")+")([\\s[(\\]|])",returnBegin:!0,contains:[{className:"builtin-name",begin:/\w+/}]},{className:"built_in",variants:[{begin:"(\\.\\./|/|\\s)(("+a.split(" ").join("|")+");?\\s)+"},{begin:/\.\./,relevance:0}]}]}}t.exports=e},237:function(t){function e(t){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}t.exports=e},355:function(t){function e(t){const e=["functions","model","data","parameters","quantities","transformed","generated"],n=["for","in","if","else","while","break","continue","return"],l=["print","reject","increment_log_prob|10","integrate_ode|10","integrate_ode_rk45|10","integrate_ode_bdf|10","algebra_solver"],i=["int","real","vector","ordered","positive_ordered","simplex","unit_vector","row_vector","matrix","cholesky_factor_corr|10","cholesky_factor_cov|10","corr_matrix|10","cov_matrix|10","void"],a=["Phi","Phi_approx","abs","acos","acosh","algebra_solver","append_array","append_col","append_row","asin","asinh","atan","atan2","atanh","bernoulli_cdf","bernoulli_lccdf","bernoulli_lcdf","bernoulli_logit_lpmf","bernoulli_logit_rng","bernoulli_lpmf","bernoulli_rng","bessel_first_kind","bessel_second_kind","beta_binomial_cdf","beta_binomial_lccdf","beta_binomial_lcdf","beta_binomial_lpmf","beta_binomial_rng","beta_cdf","beta_lccdf","beta_lcdf","beta_lpdf","beta_rng","binary_log_loss","binomial_cdf","binomial_coefficient_log","binomial_lccdf","binomial_lcdf","binomial_logit_lpmf","binomial_lpmf","binomial_rng","block","categorical_logit_lpmf","categorical_logit_rng","categorical_lpmf","categorical_rng","cauchy_cdf","cauchy_lccdf","cauchy_lcdf","cauchy_lpdf","cauchy_rng","cbrt","ceil","chi_square_cdf","chi_square_lccdf","chi_square_lcdf","chi_square_lpdf","chi_square_rng","cholesky_decompose","choose","col","cols","columns_dot_product","columns_dot_self","cos","cosh","cov_exp_quad","crossprod","csr_extract_u","csr_extract_v","csr_extract_w","csr_matrix_times_vector","csr_to_dense_matrix","cumulative_sum","determinant","diag_matrix","diag_post_multiply","diag_pre_multiply","diagonal","digamma","dims","dirichlet_lpdf","dirichlet_rng","distance","dot_product","dot_self","double_exponential_cdf","double_exponential_lccdf","double_exponential_lcdf","double_exponential_lpdf","double_exponential_rng","e","eigenvalues_sym","eigenvectors_sym","erf","erfc","exp","exp2","exp_mod_normal_cdf","exp_mod_normal_lccdf","exp_mod_normal_lcdf","exp_mod_normal_lpdf","exp_mod_normal_rng","expm1","exponential_cdf","exponential_lccdf","exponential_lcdf","exponential_lpdf","exponential_rng","fabs","falling_factorial","fdim","floor","fma","fmax","fmin","fmod","frechet_cdf","frechet_lccdf","frechet_lcdf","frechet_lpdf","frechet_rng","gamma_cdf","gamma_lccdf","gamma_lcdf","gamma_lpdf","gamma_p","gamma_q","gamma_rng","gaussian_dlm_obs_lpdf","get_lp","gumbel_cdf","gumbel_lccdf","gumbel_lcdf","gumbel_lpdf","gumbel_rng","head","hypergeometric_lpmf","hypergeometric_rng","hypot","inc_beta","int_step","integrate_ode","integrate_ode_bdf","integrate_ode_rk45","inv","inv_Phi","inv_chi_square_cdf","inv_chi_square_lccdf","inv_chi_square_lcdf","inv_chi_square_lpdf","inv_chi_square_rng","inv_cloglog","inv_gamma_cdf","inv_gamma_lccdf","inv_gamma_lcdf","inv_gamma_lpdf","inv_gamma_rng","inv_logit","inv_sqrt","inv_square","inv_wishart_lpdf","inv_wishart_rng","inverse","inverse_spd","is_inf","is_nan","lbeta","lchoose","lgamma","lkj_corr_cholesky_lpdf","lkj_corr_cholesky_rng","lkj_corr_lpdf","lkj_corr_rng","lmgamma","lmultiply","log","log10","log1m","log1m_exp","log1m_inv_logit","log1p","log1p_exp","log2","log_determinant","log_diff_exp","log_falling_factorial","log_inv_logit","log_mix","log_rising_factorial","log_softmax","log_sum_exp","logistic_cdf","logistic_lccdf","logistic_lcdf","logistic_lpdf","logistic_rng","logit","lognormal_cdf","lognormal_lccdf","lognormal_lcdf","lognormal_lpdf","lognormal_rng","machine_precision","matrix_exp","max","mdivide_left_spd","mdivide_left_tri_low","mdivide_right_spd","mdivide_right_tri_low","mean","min","modified_bessel_first_kind","modified_bessel_second_kind","multi_gp_cholesky_lpdf","multi_gp_lpdf","multi_normal_cholesky_lpdf","multi_normal_cholesky_rng","multi_normal_lpdf","multi_normal_prec_lpdf","multi_normal_rng","multi_student_t_lpdf","multi_student_t_rng","multinomial_lpmf","multinomial_rng","multiply_log","multiply_lower_tri_self_transpose","neg_binomial_2_cdf","neg_binomial_2_lccdf","neg_binomial_2_lcdf","neg_binomial_2_log_lpmf","neg_binomial_2_log_rng","neg_binomial_2_lpmf","neg_binomial_2_rng","neg_binomial_cdf","neg_binomial_lccdf","neg_binomial_lcdf","neg_binomial_lpmf","neg_binomial_rng","negative_infinity","normal_cdf","normal_lccdf","normal_lcdf","normal_lpdf","normal_rng","not_a_number","num_elements","ordered_logistic_lpmf","ordered_logistic_rng","owens_t","pareto_cdf","pareto_lccdf","pareto_lcdf","pareto_lpdf","pareto_rng","pareto_type_2_cdf","pareto_type_2_lccdf","pareto_type_2_lcdf","pareto_type_2_lpdf","pareto_type_2_rng","pi","poisson_cdf","poisson_lccdf","poisson_lcdf","poisson_log_lpmf","poisson_log_rng","poisson_lpmf","poisson_rng","positive_infinity","pow","print","prod","qr_Q","qr_R","quad_form","quad_form_diag","quad_form_sym","rank","rayleigh_cdf","rayleigh_lccdf","rayleigh_lcdf","rayleigh_lpdf","rayleigh_rng","reject","rep_array","rep_matrix","rep_row_vector","rep_vector","rising_factorial","round","row","rows","rows_dot_product","rows_dot_self","scaled_inv_chi_square_cdf","scaled_inv_chi_square_lccdf","scaled_inv_chi_square_lcdf","scaled_inv_chi_square_lpdf","scaled_inv_chi_square_rng","sd","segment","sin","singular_values","sinh","size","skew_normal_cdf","skew_normal_lccdf","skew_normal_lcdf","skew_normal_lpdf","skew_normal_rng","softmax","sort_asc","sort_desc","sort_indices_asc","sort_indices_desc","sqrt","sqrt2","square","squared_distance","step","student_t_cdf","student_t_lccdf","student_t_lcdf","student_t_lpdf","student_t_rng","sub_col","sub_row","sum","tail","tan","tanh","target","tcrossprod","tgamma","to_array_1d","to_array_2d","to_matrix","to_row_vector","to_vector","trace","trace_gen_quad_form","trace_quad_form","trigamma","trunc","uniform_cdf","uniform_lccdf","uniform_lcdf","uniform_lpdf","uniform_rng","variance","von_mises_lpdf","von_mises_rng","weibull_cdf","weibull_lccdf","weibull_lcdf","weibull_lpdf","weibull_rng","wiener_lpdf","wishart_lpdf","wishart_rng"],s=["bernoulli","bernoulli_logit","beta","beta_binomial","binomial","binomial_logit","categorical","categorical_logit","cauchy","chi_square","dirichlet","double_exponential","exp_mod_normal","exponential","frechet","gamma","gaussian_dlm_obs","gumbel","hypergeometric","inv_chi_square","inv_gamma","inv_wishart","lkj_corr","lkj_corr_cholesky","logistic","lognormal","multi_gp","multi_gp_cholesky","multi_normal","multi_normal_cholesky","multi_normal_prec","multi_student_t","multinomial","neg_binomial","neg_binomial_2","neg_binomial_2_log","normal","ordered_logistic","pareto","pareto_type_2","poisson","poisson_log","rayleigh","scaled_inv_chi_square","skew_normal","student_t","uniform","von_mises","weibull","wiener","wishart"];return{name:"Stan",aliases:["stanfuncs"],keywords:{$pattern:t.IDENT_RE,title:e,keyword:n.concat(i).concat(l),built_in:a},contains:[t.C_LINE_COMMENT_MODE,t.COMMENT(/#/,/$/,{relevance:0,keywords:{"meta-keyword":"include"}}),t.COMMENT(/\/\*/,/\*\//,{relevance:0,contains:[{className:"doctag",begin:/@(return|param)/}]}),{begin:/<\s*lower\s*=/,keywords:"lower"},{begin:/[<,]\s*upper\s*=/,keywords:"upper"},{className:"keyword",begin:/\btarget\s*\+=/,relevance:10},{begin:"~\\s*("+t.IDENT_RE+")\\s*\\(",keywords:s},{className:"number",variants:[{begin:/\b\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/},{begin:/\.\d+(?:[eE][+-]?\d+)?\b/}],relevance:0},{className:"string",begin:'"',end:'"',relevance:0}]}}t.exports=e},427:function(t){const e=t=>({IMPORTANT:{className:"meta",begin:"!important"},HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}}),n=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],l=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],a=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],s=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse();function r(t){const r=e(t),o=a,c=i,d="@[a-z-]+",u="and or not only",h="[a-zA-Z-][a-zA-Z0-9_-]*",m={className:"variable",begin:"(\\$"+h+")\\b"};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},r.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+n.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+c.join("|")+")"},{className:"selector-pseudo",begin:"::("+o.join("|")+")"},m,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},{className:"attribute",begin:"\\b("+s.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[m,r.HEXCOLOR,t.CSS_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,r.IMPORTANT]},{begin:"@(page|font-face)",lexemes:d,keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:u,attribute:l.join(" ")},contains:[{begin:d,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},m,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,r.HEXCOLOR,t.CSS_NUMBER_MODE]}]}}t.exports=r},531:function(t,e,n){"use strict";var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(8646),c=n(9462),d=n(9539),u=n(6395),h=c((function(){var t,e,n=this.iterator,l=this.mapper;while(1){if(e=this.inner)try{if(t=s(i(e.next,e.iterator)),!t.done)return t.value;this.inner=null}catch(a){d(n,"throw",a)}if(t=s(i(this.next,n)),this.done=!!t.done)return;try{this.inner=o(l(t.value,this.counter++),!1)}catch(a){d(n,"throw",a)}}}));l({target:"Iterator",proto:!0,real:!0,forced:u},{flatMap:function(t){return s(this),a(t),new h(r(this),{mapper:t,inner:null})}})},571:function(t){function e(t){const e={$pattern:t.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},n="(0|[1-9][\\d_]*)",l="(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)",i="0[bB][01_]+",a="([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)",s="0[xX]"+a,r="([eE][+-]?"+l+")",o="("+l+"(\\.\\d*|"+r+")|\\d+\\."+l+"|\\."+n+r+"?)",c="(0[xX]("+a+"\\."+a+"|\\.?"+a+")[pP][+-]?"+l+")",d="("+n+"|"+i+"|"+s+")",u="("+c+"|"+o+")",h="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",m={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},U={className:"number",begin:"\\b("+u+"([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},p={className:"string",begin:"'("+h+"|.)",end:"'",illegal:"."},F={begin:h,relevance:0},b={className:"string",begin:'"',contains:[F],end:'"[cwd]?'},Z={className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},N={className:"string",begin:"`",end:"`[cwd]?"},R={className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},S={className:"string",begin:'q"\\{',end:'\\}"'},W={className:"meta",begin:"^#!",end:"$",relevance:5},V={className:"meta",begin:"#(line)",end:"$",relevance:5},Q={className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"},y=t.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:e,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,y,R,b,Z,N,S,U,m,p,W,V,Q]}}t.exports=e},592:function(t){function e(t){return{name:"Processing",keywords:{keyword:"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI",title:"setup draw",built_in:"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE]}}t.exports=e},618:function(t){function e(t){return{name:"Oracle Rules Language",keywords:{keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,{className:"literal",variants:[{begin:"#\\s+",relevance:0},{begin:"#[a-zA-Z .]+"}]}]}}t.exports=e},633:function(t){function e(t){const e={keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",literal:"true false nil",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},n="[A-Za-z$_][0-9A-Za-z$_]*",l={className:"subst",begin:/#\{/,end:/\}/,keywords:e},i=[t.inherit(t.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'/,end:/'/,contains:[t.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,l]}]},{className:"built_in",begin:"@__"+t.IDENT_RE},{begin:"@"+t.IDENT_RE},{begin:t.IDENT_RE+"\\\\"+t.IDENT_RE}];l.contains=i;const a=t.inherit(t.TITLE_MODE,{begin:n}),s="(\\(.*\\)\\s*)?\\B[-=]>",r={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:e,contains:["self"].concat(i)}]};return{name:"MoonScript",aliases:["moon"],keywords:e,illegal:/\/\*/,contains:i.concat([t.COMMENT("--","$"),{className:"function",begin:"^\\s*"+n+"\\s*=\\s*"+s,end:"[-=]>",returnBegin:!0,contains:[a,r]},{begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:s,end:"[-=]>",returnBegin:!0,contains:[r]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[a]},a]},{className:"name",begin:n+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}t.exports=e},663:function(t){function e(t){return{name:"Cap’n Proto",aliases:["capnp"],keywords:{keyword:"struct enum interface union group import using const annotation extends in of on as with from fixed",built_in:"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List",literal:"true false"},contains:[t.QUOTE_STRING_MODE,t.NUMBER_MODE,t.HASH_COMMENT_MODE,{className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,illegal:/\n/,contains:[t.inherit(t.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,illegal:/\n/,contains:[t.inherit(t.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]}]}}t.exports=e},789:function(t){function e(t){const e={className:"variable",begin:/\b_+[a-zA-Z]\w*/},n={className:"title",begin:/[a-zA-Z][a-zA-Z0-9]+_fnc_\w*/},l={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},i={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(l,{className:"meta-string"}),{className:"meta-string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]};return{name:"SQF",case_insensitive:!0,keywords:{keyword:"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with",built_in:"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ",literal:"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.NUMBER_MODE,e,n,l,i],illegal:/#|^\$ /}}t.exports=e},829:function(t){function e(t){const e="[a-zA-Z-_][^\\n{]+\\{",n={className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{className:"keyword",begin:/\(optional\)/}]}};return{name:"Roboconf",aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{begin:"^facet "+e,end:/\}/,keywords:"facet",contains:[n,t.HASH_COMMENT_MODE]},{begin:"^\\s*instance of "+e,end:/\}/,keywords:"name count channels instance-data instance-state instance of",illegal:/\S/,contains:["self",n,t.HASH_COMMENT_MODE]},{begin:"^"+e,end:/\}/,contains:[n,t.HASH_COMMENT_MODE]},t.HASH_COMMENT_MODE]}}t.exports=e},834:function(t){function e(t,n,l){var i="KaTeX parse error: "+t;if(void 0!==n&&void 0!==l){i+=" at position "+l+": ";var a=n._input;a=a.slice(0,l)+"̲"+a.slice(l);var s=Math.max(0,l-15),r=l+15;i+=a.slice(s,r)}var o=new Error(i);return o.name="ParseError",o.__proto__=e.prototype,o.position=l,o}e.prototype.__proto__=Error.prototype,t.exports=e},840:function(t){function e(e,n,l,i,a){t.exports[e][a]={font:n,group:l,replace:i}}t.exports={math:{},text:{}};var n,l,i="math",a="text",s="main",r="ams",o="accent",c="bin",d="close",u="inner",h="mathord",m="op",U="open",p="punct",F="rel",b="spacing",Z="textord";e(i,s,F,"≡","\\equiv"),e(i,s,F,"≺","\\prec"),e(i,s,F,"≻","\\succ"),e(i,s,F,"∼","\\sim"),e(i,s,F,"⊥","\\perp"),e(i,s,F,"⪯","\\preceq"),e(i,s,F,"⪰","\\succeq"),e(i,s,F,"≃","\\simeq"),e(i,s,F,"∣","\\mid"),e(i,s,F,"≪","\\ll"),e(i,s,F,"≫","\\gg"),e(i,s,F,"≍","\\asymp"),e(i,s,F,"∥","\\parallel"),e(i,s,F,"⋈","\\bowtie"),e(i,s,F,"⌣","\\smile"),e(i,s,F,"⊑","\\sqsubseteq"),e(i,s,F,"⊒","\\sqsupseteq"),e(i,s,F,"≐","\\doteq"),e(i,s,F,"⌢","\\frown"),e(i,s,F,"∋","\\ni"),e(i,s,F,"∝","\\propto"),e(i,s,F,"⊢","\\vdash"),e(i,s,F,"⊣","\\dashv"),e(i,s,F,"∋","\\owns"),e(i,s,p,".","\\ldotp"),e(i,s,p,"⋅","\\cdotp"),e(i,s,Z,"#","\\#"),e(i,s,Z,"&","\\&"),e(i,s,Z,"ℵ","\\aleph"),e(i,s,Z,"∀","\\forall"),e(i,s,Z,"ℏ","\\hbar"),e(i,s,Z,"∃","\\exists"),e(i,s,Z,"∇","\\nabla"),e(i,s,Z,"♭","\\flat"),e(i,s,Z,"ℓ","\\ell"),e(i,s,Z,"♮","\\natural"),e(i,s,Z,"♣","\\clubsuit"),e(i,s,Z,"℘","\\wp"),e(i,s,Z,"♯","\\sharp"),e(i,s,Z,"♢","\\diamondsuit"),e(i,s,Z,"ℜ","\\Re"),e(i,s,Z,"♡","\\heartsuit"),e(i,s,Z,"ℑ","\\Im"),e(i,s,Z,"♠","\\spadesuit"),e(i,s,Z,"†","\\dag"),e(i,s,Z,"‡","\\ddag"),e(i,s,d,"⎱","\\rmoustache"),e(i,s,U,"⎰","\\lmoustache"),e(i,s,d,"⟯","\\rgroup"),e(i,s,U,"⟮","\\lgroup"),e(i,s,c,"∓","\\mp"),e(i,s,c,"⊖","\\ominus"),e(i,s,c,"⊎","\\uplus"),e(i,s,c,"⊓","\\sqcap"),e(i,s,c,"∗","\\ast"),e(i,s,c,"⊔","\\sqcup"),e(i,s,c,"◯","\\bigcirc"),e(i,s,c,"∙","\\bullet"),e(i,s,c,"‡","\\ddagger"),e(i,s,c,"≀","\\wr"),e(i,s,c,"⨿","\\amalg"),e(i,s,F,"⟵","\\longleftarrow"),e(i,s,F,"⇐","\\Leftarrow"),e(i,s,F,"⟸","\\Longleftarrow"),e(i,s,F,"⟶","\\longrightarrow"),e(i,s,F,"⇒","\\Rightarrow"),e(i,s,F,"⟹","\\Longrightarrow"),e(i,s,F,"↔","\\leftrightarrow"),e(i,s,F,"⟷","\\longleftrightarrow"),e(i,s,F,"⇔","\\Leftrightarrow"),e(i,s,F,"⟺","\\Longleftrightarrow"),e(i,s,F,"↦","\\mapsto"),e(i,s,F,"⟼","\\longmapsto"),e(i,s,F,"↗","\\nearrow"),e(i,s,F,"↩","\\hookleftarrow"),e(i,s,F,"↪","\\hookrightarrow"),e(i,s,F,"↘","\\searrow"),e(i,s,F,"↼","\\leftharpoonup"),e(i,s,F,"⇀","\\rightharpoonup"),e(i,s,F,"↙","\\swarrow"),e(i,s,F,"↽","\\leftharpoondown"),e(i,s,F,"⇁","\\rightharpoondown"),e(i,s,F,"↖","\\nwarrow"),e(i,s,F,"⇌","\\rightleftharpoons"),e(i,r,F,"≮","\\nless"),e(i,r,F,"","\\nleqslant"),e(i,r,F,"","\\nleqq"),e(i,r,F,"⪇","\\lneq"),e(i,r,F,"≨","\\lneqq"),e(i,r,F,"","\\lvertneqq"),e(i,r,F,"⋦","\\lnsim"),e(i,r,F,"⪉","\\lnapprox"),e(i,r,F,"⊀","\\nprec"),e(i,r,F,"⋠","\\npreceq"),e(i,r,F,"⋨","\\precnsim"),e(i,r,F,"⪹","\\precnapprox"),e(i,r,F,"≁","\\nsim"),e(i,r,F,"","\\nshortmid"),e(i,r,F,"∤","\\nmid"),e(i,r,F,"⊬","\\nvdash"),e(i,r,F,"⊭","\\nvDash"),e(i,r,F,"⋪","\\ntriangleleft"),e(i,r,F,"⋬","\\ntrianglelefteq"),e(i,r,F,"⊊","\\subsetneq"),e(i,r,F,"","\\varsubsetneq"),e(i,r,F,"⫋","\\subsetneqq"),e(i,r,F,"","\\varsubsetneqq"),e(i,r,F,"≯","\\ngtr"),e(i,r,F,"","\\ngeqslant"),e(i,r,F,"","\\ngeqq"),e(i,r,F,"⪈","\\gneq"),e(i,r,F,"≩","\\gneqq"),e(i,r,F,"","\\gvertneqq"),e(i,r,F,"⋧","\\gnsim"),e(i,r,F,"⪊","\\gnapprox"),e(i,r,F,"⊁","\\nsucc"),e(i,r,F,"⋡","\\nsucceq"),e(i,r,F,"⋩","\\succnsim"),e(i,r,F,"⪺","\\succnapprox"),e(i,r,F,"≆","\\ncong"),e(i,r,F,"","\\nshortparallel"),e(i,r,F,"∦","\\nparallel"),e(i,r,F,"⊯","\\nVDash"),e(i,r,F,"⋫","\\ntriangleright"),e(i,r,F,"⋭","\\ntrianglerighteq"),e(i,r,F,"","\\nsupseteqq"),e(i,r,F,"⊋","\\supsetneq"),e(i,r,F,"","\\varsupsetneq"),e(i,r,F,"⫌","\\supsetneqq"),e(i,r,F,"","\\varsupsetneqq"),e(i,r,F,"⊮","\\nVdash"),e(i,r,F,"⪵","\\precneqq"),e(i,r,F,"⪶","\\succneqq"),e(i,r,F,"","\\nsubseteqq"),e(i,r,c,"⊴","\\unlhd"),e(i,r,c,"⊵","\\unrhd"),e(i,r,F,"↚","\\nleftarrow"),e(i,r,F,"↛","\\nrightarrow"),e(i,r,F,"⇍","\\nLeftarrow"),e(i,r,F,"⇏","\\nRightarrow"),e(i,r,F,"↮","\\nleftrightarrow"),e(i,r,F,"⇎","\\nLeftrightarrow"),e(i,r,F,"△","\\vartriangle"),e(i,r,Z,"ℏ","\\hslash"),e(i,r,Z,"▽","\\triangledown"),e(i,r,Z,"◊","\\lozenge"),e(i,r,Z,"Ⓢ","\\circledS"),e(i,r,Z,"®","\\circledR"),e(i,r,Z,"∡","\\measuredangle"),e(i,r,Z,"∄","\\nexists"),e(i,r,Z,"℧","\\mho"),e(i,r,Z,"Ⅎ","\\Finv"),e(i,r,Z,"⅁","\\Game"),e(i,r,Z,"k","\\Bbbk"),e(i,r,Z,"‵","\\backprime"),e(i,r,Z,"▲","\\blacktriangle"),e(i,r,Z,"▼","\\blacktriangledown"),e(i,r,Z,"■","\\blacksquare"),e(i,r,Z,"⧫","\\blacklozenge"),e(i,r,Z,"★","\\bigstar"),e(i,r,Z,"∢","\\sphericalangle"),e(i,r,Z,"∁","\\complement"),e(i,r,Z,"ð","\\eth"),e(i,r,Z,"╱","\\diagup"),e(i,r,Z,"╲","\\diagdown"),e(i,r,Z,"□","\\square"),e(i,r,Z,"□","\\Box"),e(i,r,Z,"◊","\\Diamond"),e(i,r,Z,"¥","\\yen"),e(i,r,Z,"✓","\\checkmark"),e(i,r,Z,"ℶ","\\beth"),e(i,r,Z,"ℸ","\\daleth"),e(i,r,Z,"ℷ","\\gimel"),e(i,r,Z,"ϝ","\\digamma"),e(i,r,Z,"ϰ","\\varkappa"),e(i,r,U,"┌","\\ulcorner"),e(i,r,d,"┐","\\urcorner"),e(i,r,U,"└","\\llcorner"),e(i,r,d,"┘","\\lrcorner"),e(i,r,F,"≦","\\leqq"),e(i,r,F,"⩽","\\leqslant"),e(i,r,F,"⪕","\\eqslantless"),e(i,r,F,"≲","\\lesssim"),e(i,r,F,"⪅","\\lessapprox"),e(i,r,F,"≊","\\approxeq"),e(i,r,c,"⋖","\\lessdot"),e(i,r,F,"⋘","\\lll"),e(i,r,F,"≶","\\lessgtr"),e(i,r,F,"⋚","\\lesseqgtr"),e(i,r,F,"⪋","\\lesseqqgtr"),e(i,r,F,"≑","\\doteqdot"),e(i,r,F,"≓","\\risingdotseq"),e(i,r,F,"≒","\\fallingdotseq"),e(i,r,F,"∽","\\backsim"),e(i,r,F,"⋍","\\backsimeq"),e(i,r,F,"⫅","\\subseteqq"),e(i,r,F,"⋐","\\Subset"),e(i,r,F,"⊏","\\sqsubset"),e(i,r,F,"≼","\\preccurlyeq"),e(i,r,F,"⋞","\\curlyeqprec"),e(i,r,F,"≾","\\precsim"),e(i,r,F,"⪷","\\precapprox"),e(i,r,F,"⊲","\\vartriangleleft"),e(i,r,F,"⊴","\\trianglelefteq"),e(i,r,F,"⊨","\\vDash"),e(i,r,F,"⊪","\\Vvdash"),e(i,r,F,"⌣","\\smallsmile"),e(i,r,F,"⌢","\\smallfrown"),e(i,r,F,"≏","\\bumpeq"),e(i,r,F,"≎","\\Bumpeq"),e(i,r,F,"≧","\\geqq"),e(i,r,F,"⩾","\\geqslant"),e(i,r,F,"⪖","\\eqslantgtr"),e(i,r,F,"≳","\\gtrsim"),e(i,r,F,"⪆","\\gtrapprox"),e(i,r,c,"⋗","\\gtrdot"),e(i,r,F,"⋙","\\ggg"),e(i,r,F,"≷","\\gtrless"),e(i,r,F,"⋛","\\gtreqless"),e(i,r,F,"⪌","\\gtreqqless"),e(i,r,F,"≖","\\eqcirc"),e(i,r,F,"≗","\\circeq"),e(i,r,F,"≜","\\triangleq"),e(i,r,F,"∼","\\thicksim"),e(i,r,F,"≈","\\thickapprox"),e(i,r,F,"⫆","\\supseteqq"),e(i,r,F,"⋑","\\Supset"),e(i,r,F,"⊐","\\sqsupset"),e(i,r,F,"≽","\\succcurlyeq"),e(i,r,F,"⋟","\\curlyeqsucc"),e(i,r,F,"≿","\\succsim"),e(i,r,F,"⪸","\\succapprox"),e(i,r,F,"⊳","\\vartriangleright"),e(i,r,F,"⊵","\\trianglerighteq"),e(i,r,F,"⊩","\\Vdash"),e(i,r,F,"∣","\\shortmid"),e(i,r,F,"∥","\\shortparallel"),e(i,r,F,"≬","\\between"),e(i,r,F,"⋔","\\pitchfork"),e(i,r,F,"∝","\\varpropto"),e(i,r,F,"◀","\\blacktriangleleft"),e(i,r,F,"∴","\\therefore"),e(i,r,F,"∍","\\backepsilon"),e(i,r,F,"▶","\\blacktriangleright"),e(i,r,F,"∵","\\because"),e(i,r,F,"⋘","\\llless"),e(i,r,F,"⋙","\\gggtr"),e(i,r,c,"⊲","\\lhd"),e(i,r,c,"⊳","\\rhd"),e(i,r,F,"≂","\\eqsim"),e(i,s,F,"⋈","\\Join"),e(i,r,F,"≑","\\Doteq"),e(i,r,c,"∔","\\dotplus"),e(i,r,c,"∖","\\smallsetminus"),e(i,r,c,"⋒","\\Cap"),e(i,r,c,"⋓","\\Cup"),e(i,r,c,"⩞","\\doublebarwedge"),e(i,r,c,"⊟","\\boxminus"),e(i,r,c,"⊞","\\boxplus"),e(i,r,c,"⋇","\\divideontimes"),e(i,r,c,"⋉","\\ltimes"),e(i,r,c,"⋊","\\rtimes"),e(i,r,c,"⋋","\\leftthreetimes"),e(i,r,c,"⋌","\\rightthreetimes"),e(i,r,c,"⋏","\\curlywedge"),e(i,r,c,"⋎","\\curlyvee"),e(i,r,c,"⊝","\\circleddash"),e(i,r,c,"⊛","\\circledast"),e(i,r,c,"⋅","\\centerdot"),e(i,r,c,"⊺","\\intercal"),e(i,r,c,"⋒","\\doublecap"),e(i,r,c,"⋓","\\doublecup"),e(i,r,c,"⊠","\\boxtimes"),e(i,r,F,"⇢","\\dashrightarrow"),e(i,r,F,"⇠","\\dashleftarrow"),e(i,r,F,"⇇","\\leftleftarrows"),e(i,r,F,"⇆","\\leftrightarrows"),e(i,r,F,"⇚","\\Lleftarrow"),e(i,r,F,"↞","\\twoheadleftarrow"),e(i,r,F,"↢","\\leftarrowtail"),e(i,r,F,"↫","\\looparrowleft"),e(i,r,F,"⇋","\\leftrightharpoons"),e(i,r,F,"↶","\\curvearrowleft"),e(i,r,F,"↺","\\circlearrowleft"),e(i,r,F,"↰","\\Lsh"),e(i,r,F,"⇈","\\upuparrows"),e(i,r,F,"↿","\\upharpoonleft"),e(i,r,F,"⇃","\\downharpoonleft"),e(i,r,F,"⊸","\\multimap"),e(i,r,F,"↭","\\leftrightsquigarrow"),e(i,r,F,"⇉","\\rightrightarrows"),e(i,r,F,"⇄","\\rightleftarrows"),e(i,r,F,"↠","\\twoheadrightarrow"),e(i,r,F,"↣","\\rightarrowtail"),e(i,r,F,"↬","\\looparrowright"),e(i,r,F,"↷","\\curvearrowright"),e(i,r,F,"↻","\\circlearrowright"),e(i,r,F,"↱","\\Rsh"),e(i,r,F,"⇊","\\downdownarrows"),e(i,r,F,"↾","\\upharpoonright"),e(i,r,F,"⇂","\\downharpoonright"),e(i,r,F,"⇝","\\rightsquigarrow"),e(i,r,F,"⇝","\\leadsto"),e(i,r,F,"⇛","\\Rrightarrow"),e(i,r,F,"↾","\\restriction"),e(i,s,Z,"‘","`"),e(i,s,Z,"$","\\$"),e(i,s,Z,"%","\\%"),e(i,s,Z,"_","\\_"),e(i,s,Z,"∠","\\angle"),e(i,s,Z,"∞","\\infty"),e(i,s,Z,"′","\\prime"),e(i,s,Z,"△","\\triangle"),e(i,s,Z,"Γ","\\Gamma"),e(i,s,Z,"Δ","\\Delta"),e(i,s,Z,"Θ","\\Theta"),e(i,s,Z,"Λ","\\Lambda"),e(i,s,Z,"Ξ","\\Xi"),e(i,s,Z,"Π","\\Pi"),e(i,s,Z,"Σ","\\Sigma"),e(i,s,Z,"Υ","\\Upsilon"),e(i,s,Z,"Φ","\\Phi"),e(i,s,Z,"Ψ","\\Psi"),e(i,s,Z,"Ω","\\Omega"),e(i,s,Z,"¬","\\neg"),e(i,s,Z,"¬","\\lnot"),e(i,s,Z,"⊤","\\top"),e(i,s,Z,"⊥","\\bot"),e(i,s,Z,"∅","\\emptyset"),e(i,r,Z,"∅","\\varnothing"),e(i,s,h,"α","\\alpha"),e(i,s,h,"β","\\beta"),e(i,s,h,"γ","\\gamma"),e(i,s,h,"δ","\\delta"),e(i,s,h,"ϵ","\\epsilon"),e(i,s,h,"ζ","\\zeta"),e(i,s,h,"η","\\eta"),e(i,s,h,"θ","\\theta"),e(i,s,h,"ι","\\iota"),e(i,s,h,"κ","\\kappa"),e(i,s,h,"λ","\\lambda"),e(i,s,h,"μ","\\mu"),e(i,s,h,"ν","\\nu"),e(i,s,h,"ξ","\\xi"),e(i,s,h,"o","\\omicron"),e(i,s,h,"π","\\pi"),e(i,s,h,"ρ","\\rho"),e(i,s,h,"σ","\\sigma"),e(i,s,h,"τ","\\tau"),e(i,s,h,"υ","\\upsilon"),e(i,s,h,"ϕ","\\phi"),e(i,s,h,"χ","\\chi"),e(i,s,h,"ψ","\\psi"),e(i,s,h,"ω","\\omega"),e(i,s,h,"ε","\\varepsilon"),e(i,s,h,"ϑ","\\vartheta"),e(i,s,h,"ϖ","\\varpi"),e(i,s,h,"ϱ","\\varrho"),e(i,s,h,"ς","\\varsigma"),e(i,s,h,"φ","\\varphi"),e(i,s,c,"∗","*"),e(i,s,c,"+","+"),e(i,s,c,"−","-"),e(i,s,c,"⋅","\\cdot"),e(i,s,c,"∘","\\circ"),e(i,s,c,"÷","\\div"),e(i,s,c,"±","\\pm"),e(i,s,c,"×","\\times"),e(i,s,c,"∩","\\cap"),e(i,s,c,"∪","\\cup"),e(i,s,c,"∖","\\setminus"),e(i,s,c,"∧","\\land"),e(i,s,c,"∨","\\lor"),e(i,s,c,"∧","\\wedge"),e(i,s,c,"∨","\\vee"),e(i,s,Z,"√","\\surd"),e(i,s,U,"(","("),e(i,s,U,"[","["),e(i,s,U,"⟨","\\langle"),e(i,s,U,"∣","\\lvert"),e(i,s,U,"∥","\\lVert"),e(i,s,d,")",")"),e(i,s,d,"]","]"),e(i,s,d,"?","?"),e(i,s,d,"!","!"),e(i,s,d,"⟩","\\rangle"),e(i,s,d,"∣","\\rvert"),e(i,s,d,"∥","\\rVert"),e(i,s,F,"=","="),e(i,s,F,"<","<"),e(i,s,F,">",">"),e(i,s,F,":",":"),e(i,s,F,"≈","\\approx"),e(i,s,F,"≅","\\cong"),e(i,s,F,"≥","\\ge"),e(i,s,F,"≥","\\geq"),e(i,s,F,"←","\\gets"),e(i,s,F,">","\\gt"),e(i,s,F,"∈","\\in"),e(i,s,F,"∉","\\notin"),e(i,s,F,"⊂","\\subset"),e(i,s,F,"⊃","\\supset"),e(i,s,F,"⊆","\\subseteq"),e(i,s,F,"⊇","\\supseteq"),e(i,r,F,"⊈","\\nsubseteq"),e(i,r,F,"⊉","\\nsupseteq"),e(i,s,F,"⊨","\\models"),e(i,s,F,"←","\\leftarrow"),e(i,s,F,"≤","\\le"),e(i,s,F,"≤","\\leq"),e(i,s,F,"<","\\lt"),e(i,s,F,"≠","\\ne"),e(i,s,F,"≠","\\neq"),e(i,s,F,"→","\\rightarrow"),e(i,s,F,"→","\\to"),e(i,r,F,"≱","\\ngeq"),e(i,r,F,"≰","\\nleq"),e(i,s,b,null,"\\!"),e(i,s,b," ","\\ "),e(i,s,b," ","~"),e(i,s,b,null,"\\,"),e(i,s,b,null,"\\:"),e(i,s,b,null,"\\;"),e(i,s,b,null,"\\enspace"),e(i,s,b,null,"\\qquad"),e(i,s,b,null,"\\quad"),e(i,s,b," ","\\space"),e(i,s,p,",",","),e(i,s,p,";",";"),e(i,s,p,":","\\colon"),e(i,r,c,"⊼","\\barwedge"),e(i,r,c,"⊻","\\veebar"),e(i,s,c,"⊙","\\odot"),e(i,s,c,"⊕","\\oplus"),e(i,s,c,"⊗","\\otimes"),e(i,s,Z,"∂","\\partial"),e(i,s,c,"⊘","\\oslash"),e(i,r,c,"⊚","\\circledcirc"),e(i,r,c,"⊡","\\boxdot"),e(i,s,c,"△","\\bigtriangleup"),e(i,s,c,"▽","\\bigtriangledown"),e(i,s,c,"†","\\dagger"),e(i,s,c,"⋄","\\diamond"),e(i,s,c,"⋆","\\star"),e(i,s,c,"◃","\\triangleleft"),e(i,s,c,"▹","\\triangleright"),e(i,s,U,"{","\\{"),e(i,s,d,"}","\\}"),e(i,s,U,"{","\\lbrace"),e(i,s,d,"}","\\rbrace"),e(i,s,U,"[","\\lbrack"),e(i,s,d,"]","\\rbrack"),e(i,s,U,"⌊","\\lfloor"),e(i,s,d,"⌋","\\rfloor"),e(i,s,U,"⌈","\\lceil"),e(i,s,d,"⌉","\\rceil"),e(i,s,Z,"\\","\\backslash"),e(i,s,Z,"∣","|"),e(i,s,Z,"∣","\\vert"),e(i,s,Z,"∥","\\|"),e(i,s,Z,"∥","\\Vert"),e(i,s,F,"↑","\\uparrow"),e(i,s,F,"⇑","\\Uparrow"),e(i,s,F,"↓","\\downarrow"),e(i,s,F,"⇓","\\Downarrow"),e(i,s,F,"↕","\\updownarrow"),e(i,s,F,"⇕","\\Updownarrow"),e(i,i,m,"∐","\\coprod"),e(i,i,m,"⋁","\\bigvee"),e(i,i,m,"⋀","\\bigwedge"),e(i,i,m,"⨄","\\biguplus"),e(i,i,m,"⋂","\\bigcap"),e(i,i,m,"⋃","\\bigcup"),e(i,i,m,"∫","\\int"),e(i,i,m,"∫","\\intop"),e(i,i,m,"∬","\\iint"),e(i,i,m,"∭","\\iiint"),e(i,i,m,"∏","\\prod"),e(i,i,m,"∑","\\sum"),e(i,i,m,"⨂","\\bigotimes"),e(i,i,m,"⨁","\\bigoplus"),e(i,i,m,"⨀","\\bigodot"),e(i,i,m,"∮","\\oint"),e(i,i,m,"⨆","\\bigsqcup"),e(i,i,m,"∫","\\smallint"),e(i,s,u,"…","\\ldots"),e(i,s,u,"⋯","\\cdots"),e(i,s,u,"⋱","\\ddots"),e(i,s,Z,"⋮","\\vdots"),e(i,s,o,"´","\\acute"),e(i,s,o,"`","\\grave"),e(i,s,o,"¨","\\ddot"),e(i,s,o,"~","\\tilde"),e(i,s,o,"¯","\\bar"),e(i,s,o,"˘","\\breve"),e(i,s,o,"ˇ","\\check"),e(i,s,o,"^","\\hat"),e(i,s,o,"⃗","\\vec"),e(i,s,o,"˙","\\dot"),e(i,s,h,"ı","\\imath"),e(i,s,h,"ȷ","\\jmath"),e(a,s,b," ","\\ "),e(a,s,b," "," "),e(a,s,b," ","~");var N='0123456789/@."';for(n=0;nl(t))).join("");return e}function a(t){const e="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance",n="get set args call";return{name:"AspectJ",keywords:e,illegal:/<\/|#/,contains:[t.COMMENT(/\/\*\*/,/\*\//,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:/@[A-Za-z]+/}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,illegal:/[:;"\[\]]/,contains:[{beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},t.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:e+" "+n,excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"pointcut after before around throwing returning",end:/[)]/,excludeEnd:!1,illegal:/["\[\]]/,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,contains:[t.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,relevance:0,excludeEnd:!1,keywords:e,illegal:/["\[\]]/,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),keywords:e+" "+n,relevance:0},t.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{className:"function",begin:/\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,end:/[{;=]/,keywords:e,excludeEnd:!0,contains:[{begin:i(t.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,relevance:0,keywords:e,contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},t.C_NUMBER_MODE,{className:"meta",begin:/@[A-Za-z]+/}]}}n(8111),n(1701),t.exports=a},1034:function(t,e,n){"use strict";var l=n(9565),i=n(9297),a=n(1625),s=n(7979),r=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in r||i(t,"flags")||!a(r,t)?e:l(s,t)}},1035:function(t){function e(t){const e="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",n="false true",l=[t.C_LINE_COMMENT_MODE,t.COMMENT(/\{/,/\}/,{relevance:0}),t.COMMENT(/\(\*/,/\*\)/,{relevance:10})],i={className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},a={className:"string",begin:/(#\d+)+/},s={className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0},r={className:"string",begin:'"',end:'"'},o={className:"function",beginKeywords:"procedure",end:/[:;]/,keywords:"procedure|10",contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:e,contains:[i,a]}].concat(l)},c={className:"class",begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",returnBegin:!0,contains:[t.TITLE_MODE,o]};return{name:"C/AL",case_insensitive:!0,keywords:{keyword:e,literal:n},illegal:/\/\*/,contains:[i,a,s,r,t.NUMBER_MODE,c,o]}}t.exports=e},1090:function(t){function e(t){const e={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},n={className:"subst",variants:[{begin:/\$\{/,end:/\}/}],keywords:"true false null this is new super"},l={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:'"""',end:'"""',contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,e,n]},{begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,e,n]}]};n.contains=[t.C_NUMBER_MODE,l];const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],a=i.map((t=>`${t}?`)),s={keyword:"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is late library mixin new null on operator part required rethrow return set show static super switch sync this throw true try typedef var void while with yield",built_in:i.concat(a).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]),$pattern:/[A-Za-z][A-Za-z0-9_]*\??/};return{name:"Dart",keywords:s,contains:[l,t.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0}),t.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".",end:"$",relevance:0}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},t.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}t.exports=e},1102:function(t){function e(t){const e="[a-z][a-zA-Z0-9_]*",n={className:"string",begin:"\\$.{1}"},l={className:"symbol",begin:"#"+t.UNDERSCORE_IDENT_RE};return{name:"Smalltalk",aliases:["st"],keywords:"self super nil true false thisContext",contains:[t.COMMENT('"','"'),t.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:e+":",relevance:0},t.C_NUMBER_MODE,l,n,{begin:"\\|[ ]*"+e+"([ ]+"+e+")*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+e}]},{begin:"#\\(",end:"\\)",contains:[t.APOS_STRING_MODE,n,t.C_NUMBER_MODE,l]}]}}t.exports=e},1103:function(t){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},1114:function(t){function e(t){return{name:"RenderMan RSL",keywords:{keyword:"float color point normal vector matrix while for if do return else break extern continue",built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"},illegal:"","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],R=[0,1.2,1.8,2.4,3],S=function(t,e,n,i){if("<"===t||"\\lt"===t?t="\\langle":">"!==t&&"\\gt"!==t||(t="\\rangle"),o.contains(b,t)||o.contains(N,t))return U(t,e,!1,n,i);if(o.contains(Z,t))return F(t,R[e],!1,n,i);throw new l("Illegal delimiter: '"+t+"'")},W=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],V=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}],Q=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],y=function(t){return"small"===t.type?"Main-Regular":"large"===t.type?"Size"+t.size+"-Regular":"stack"===t.type?"Size4-Regular":void 0},T=function(t,e,n,l){for(var i=Math.min(2,3-l.style.size),a=i;ae)return n[a]}return n[n.length-1]},M=function(t,e,n,l,i){var a;"<"===t||"\\lt"===t?t="\\langle":">"!==t&&"\\gt"!==t||(t="\\rangle"),a=o.contains(N,t)?W:o.contains(b,t)?Q:V;var s=T(t,e,a,l);return"small"===s.type?m(t,s.style,n,l,i):"large"===s.type?U(t,s.size,n,l,i):"stack"===s.type?F(t,e,n,l,i):void 0},g=function(t,e,n,l,i){var a=s.metrics.axisHeight*l.style.sizeMultiplier,r=901,o=5/s.metrics.ptPerEm,c=Math.max(e-a,n+a),d=Math.max(c/500*r,2*c-o);return M(t,d,!0,l,i)};t.exports={sizedDelim:S,customSizedDelim:M,leftRightDelim:g}},1185:function(t){function e(t){const e="\\d(_|\\d)*",n="[eE][-+]?"+e,l=e+"(\\."+e+")?("+n+")?",i="\\w+",a=e+"#"+i+"(\\."+i+")?#("+n+")?",s="\\b("+a+"|"+l+")";return{name:"VHDL",case_insensitive:!0,keywords:{keyword:"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor",built_in:"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector",literal:"false true note warning error failure line text side width"},illegal:/\{/,contains:[t.C_BLOCK_COMMENT_MODE,t.COMMENT("--","$"),t.QUOTE_STRING_MODE,{className:"number",begin:s,relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",contains:[t.BACKSLASH_ESCAPE]},{className:"symbol",begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[t.BACKSLASH_ESCAPE]}]}}t.exports=e},1225:function(t){function e(t){const e={className:"meta",begin:"@[A-Za-z]+"},n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}]},l={className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},i={className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},a={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},s={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},r={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[a]},s]},o={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[s]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,l,i,a,o,r,t.C_NUMBER_MODE,e]}}t.exports=e},1259:function(t){function e(t){const e="assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty",n="shared abstract formal default actual variable late native deprecated final sealed annotation suppressWarnings small",l="doc by license see throws tagged",i={className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:e,relevance:10},a=[{className:"string",begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',contains:[i]},{className:"string",begin:"'",end:"'"},{className:"number",begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",relevance:0}];return i.contains=a,{name:"Ceylon",keywords:{keyword:e+" "+n,meta:l},illegal:"\\$[^01]|#[^0-9a-fA-F]",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),{className:"meta",begin:'@[a-z]\\w*(?::"[^"]*")?'}].concat(a)}}t.exports=e},1261:function(t){function e(t){return{name:"Backus–Naur Form",contains:[{className:"attribute",begin://},{begin:/::=/,end:/$/,contains:[{begin://},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}]}}t.exports=e},1277:function(t){function e(t){return{name:"CSP",case_insensitive:!1,keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_-]*",keyword:"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src"},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",begin:"^Content",end:":",excludeEnd:!0}]}}t.exports=e},1307:function(t){function e(t){var e="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",n="\\|[^]*?\\|",l="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",i={className:"literal",begin:"\\b(t{1}|nil)\\b"},a={className:"number",variants:[{begin:l,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{begin:"#(c|C)\\("+l+" +"+l,end:"\\)"}]},s=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),r=t.COMMENT(";","$",{relevance:0}),o={begin:"\\*",end:"\\*"},c={className:"symbol",begin:"[:&]"+e},d={begin:e,relevance:0},u={begin:n},h={begin:"\\(",end:"\\)",contains:["self",i,s,a,d]},m={contains:[a,s,o,c,h,d],variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{name:"quote"}},{begin:"'"+n}]},U={variants:[{begin:"'"+e},{begin:"#'"+e+"(::"+e+")*"}]},p={begin:"\\(\\s*",end:"\\)"},F={endsWithParent:!0,relevance:0};return p.contains=[{className:"name",variants:[{begin:e,relevance:0},{begin:n}]},F],F.contains=[m,U,p,i,a,s,r,o,c,u,d],{name:"Lisp",illegal:/\S/,contains:[a,t.SHEBANG(),i,s,r,m,U,p,d]}}t.exports=e},1381:function(t){function e(t){return{name:"AVR Assembly",case_insensitive:!0,keywords:{$pattern:"\\.?"+t.IDENT_RE,keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"},contains:[t.C_BLOCK_COMMENT_MODE,t.COMMENT(";","$",{relevance:0}),t.C_NUMBER_MODE,t.BINARY_NUMBER_MODE,{className:"number",begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},t.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{className:"subst",begin:"@[0-9]+"}]}}t.exports=e},1548:function(t,e,n){"use strict";var l=n(4576),i=n(9039),a=n(9519),s=n(4215),r=l.structuredClone;t.exports=!!r&&!i((function(){if("DENO"===s&&a>92||"NODE"===s&&a>94||"BROWSER"===s&&a>97)return!1;var t=new ArrayBuffer(8),e=r(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},1678:function(t,e,n){"use strict";var l=n(6395),i=n(6518),a=n(4576),s=n(7751),r=n(9504),o=n(9039),c=n(3392),d=n(4901),u=n(3517),h=n(4117),m=n(34),U=n(757),p=n(2652),F=n(8551),b=n(6955),Z=n(9297),N=n(4659),R=n(6699),S=n(6198),W=n(2812),V=n(1034),Q=n(2248),y=n(4402),T=n(8469),M=n(4483),g=n(6249),E=n(1548),G=a.Object,B=a.Array,J=a.Date,k=a.Error,Y=a.TypeError,C=a.PerformanceMark,X=s("DOMException"),I=Q.Map,D=Q.has,f=Q.get,L=Q.set,w=y.Set,x=y.add,z=y.has,v=s("Object","keys"),O=r([].push),_=r((!0).valueOf),j=r(1..valueOf),K=r("".valueOf),P=r(J.prototype.getTime),A=c("structuredClone"),H="DataCloneError",q="Transferring",$=function(t){return!o((function(){var e=new a.Set([7]),n=t(e),l=t(G(7));return n===e||!n.has(7)||!m(l)||7!==+l}))&&t},tt=function(t,e){return!o((function(){var n=new e,l=t({a:n,b:n});return!(l&&l.a===l.b&&l.a instanceof e&&l.a.stack===n.stack)}))},et=function(t){return!o((function(){var e=t(new a.AggregateError([1],A,{cause:3}));return"AggregateError"!==e.name||1!==e.errors[0]||e.message!==A||3!==e.cause}))},nt=a.structuredClone,lt=l||!tt(nt,k)||!tt(nt,X)||!et(nt),it=!nt&&$((function(t){return new C(A,{detail:t}).detail})),at=$(nt)||it,st=function(t){throw new X("Uncloneable type: "+t,H)},rt=function(t,e){throw new X((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",H)},ot=function(t,e){return at||rt(e),at(t)},ct=function(){var t;try{t=new a.DataTransfer}catch(e){try{t=new a.ClipboardEvent("").clipboardData}catch(n){}}return t&&t.items&&t.files?t:null},dt=function(t,e,n){if(D(e,t))return f(e,t);var l,i,s,r,o,c,u=n||b(t);if("SharedArrayBuffer"===u)l=at?at(t):t;else{var h=a.DataView;h||d(t.slice)||rt("ArrayBuffer");try{if(d(t.slice)&&!t.resizable)l=t.slice(0);else{i=t.byteLength,s="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0,l=new ArrayBuffer(i,s),r=new h(t),o=new h(l);for(c=0;c1&&!h(arguments[1])?F(arguments[1]):void 0,i=l?l.transfer:void 0;void 0!==i&&(e=new I,n=mt(i,e));var a=ht(t,e);return n&&Ut(n),a}})},1689:function(t,e,n){"use strict";var l=n(6518),i=n(4576),a=n(8745),s=n(7680),r=n(6043),o=n(9306),c=n(1103),d=i.Promise,u=!1,h=!d||!d["try"]||c((function(){d["try"]((function(t){u=8===t}),8)})).error||!u;l({target:"Promise",stat:!0,forced:h},{try:function(t){var e=arguments.length>1?s(arguments,1):[],n=r.f(this),l=c((function(){return a(o(t),void 0,e)}));return(l.error?n.reject:n.resolve)(l.value),n.promise}})},1739:function(t){function e(t){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}t.exports=e},1869:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(?=",t,")")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],n=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],l=["__debug__","Ellipsis","False","None","NotImplemented","True"],a=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],s={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:e,built_in:n,literal:l,type:a},r={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:s,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,r,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,r,c,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,c,o]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},u="[0-9](_?[0-9])*",h=`(\\b(${u}))?\\.(${u})|\\b(${u})\\.`,m={className:"number",relevance:0,variants:[{begin:`(\\b(${u})|(${h}))[eE][+-]?(${u})[jJ]?\\b`},{begin:`(${h})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${u})[jJ]\\b`}]},U={className:"comment",begin:i(/# type:/),end:/$/,keywords:s,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},p={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:["self",r,m,d,t.HASH_COMMENT_MODE]}]};return o.contains=[d,m,r],{name:"Python",aliases:["py","gyp","ipython"],keywords:s,illegal:/(<\/|->|\?)|=>/,contains:[r,m,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,U,t.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[t.UNDERSCORE_TITLE_MODE,p,{begin:/->/,endsWithParent:!0,keywords:s}]},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[m,p,d]}]}}n(8111),n(1701),t.exports=s},1872:function(t){function e(t){var e="a-zA-Z_\\-!.?+*=<>&#'",n="["+e+"]["+e+"0-9/;:]*",l={$pattern:n,"builtin-name":"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"},i="[-+]?\\d+(\\.\\d+)?",a={begin:n,relevance:0},s={className:"number",begin:i,relevance:0},r=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),o=t.COMMENT(";","$",{relevance:0}),c={className:"literal",begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},d={begin:"[\\[\\{]",end:"[\\]\\}]"},u={className:"comment",begin:"\\^"+n},h=t.COMMENT("\\^\\{","\\}"),m={className:"symbol",begin:"[:]{1,2}"+n},U={begin:"\\(",end:"\\)"},p={endsWithParent:!0,relevance:0},F={className:"name",relevance:0,keywords:l,begin:n,starts:p},b=[U,r,u,h,o,m,d,s,c,a];return U.contains=[t.COMMENT("comment",""),F,p],p.contains=b,d.contains=b,{name:"Hy",aliases:["hylang"],illegal:/\S/,contains:[t.SHEBANG(),U,r,u,h,o,m,d,s,c]}}t.exports=e},1895:function(t){function e(t){const e=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"],n=["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"],l=["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"];return{name:"Smali",contains:[{className:"string",begin:'"',end:'"',relevance:0},t.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{begin:"\\s("+l.join("|")+")"}]},{className:"built_in",variants:[{begin:"\\s("+e.join("|")+")\\s"},{begin:"\\s("+e.join("|")+")((-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{begin:"\\s("+n.join("|")+")((-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{begin:"[vp][0-9]+"}]}}t.exports=e},1951:function(t){function e(t){if(!t.__matchAtRelocatable){var e=t.source+"|()",n="g"+(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"");t.__matchAtRelocatable=new RegExp(e,n)}return t.__matchAtRelocatable}function n(t,n,l){if(t.global||t.sticky)throw new Error("matchAt(...): Only non-global regexes are supported");var i=e(t);i.lastIndex=l;var a=i.exec(n);return null==a[a.length-1]?(a.length=a.length-1,a):null}t.exports=n},1969:function(t){function e(t){return{name:"RenderMan RIB",keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",illegal:"0?t.src.charCodeAt(e-1):-1,l=e+1<=i?t.src.charCodeAt(e+1):-1,(32===n||9===n||l>=48&&l<=57)&&(s=!1),32!==l&&9!==l||(a=!1),{can_open:a,can_close:s}}function a(t,e){var n,l,a,s,r;if("$"!==t.src[t.pos])return!1;if(s=i(t,t.pos),!s.can_open)return e||(t.pending+="$"),t.pos+=1,!0;n=t.pos+1,l=n;while(-1!==(l=t.src.indexOf("$",l))){r=l-1;while("\\"===t.src[r])r-=1;if((l-r)%2==1)break;l+=1}return-1===l?(e||(t.pending+="$"),t.pos=n,!0):l-n===0?(e||(t.pending+="$$"),t.pos=n+1,!0):(s=i(t,l),s.can_close?(e||(a=t.push("math_inline","math",0),a.markup="$",a.content=t.src.slice(n,l)),t.pos=l+1,!0):(e||(t.pending+="$"),t.pos=n,!0))}function s(t,e,n,l){var i,a,s,r,o,c=!1,d=t.bMarks[e]+t.tShift[e],u=t.eMarks[e];if(d+2>u)return!1;if("$$"!==t.src.slice(d,d+2))return!1;if(d+=2,i=t.src.slice(d,u),l)return!0;for("$$"===i.trim().slice(-2)&&(i=i.trim().slice(0,-2),c=!0),s=e;!c;){if(s++,s>=n)break;if(d=t.bMarks[s]+t.tShift[s],u=t.eMarks[s],d"+l.renderToString(t,e)+"

"}catch(n){return e.throwOnError&&console.log(n),t}},o=function(t,e){return r(t[e].content)+"\n"};t.inline.ruler.after("escape","math_inline",a),t.block.ruler.after("blockquote","math_block",s,{alt:["paragraph","reference","blockquote","list"]}),t.renderer.rules.math_inline=i,t.renderer.rules.math_block=o}},2080:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function s(t){const e=t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),n={className:"params",begin:/\(/,end:/\)/,contains:["self",t.C_NUMBER_MODE,e]},l=t.COMMENT(/--/,/$/),s=t.COMMENT(/\(\*/,/\*\)/,{contains:["self",l]}),r=[l,s,t.HASH_COMMENT_MODE],o=[/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/],c=[/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/];return{name:"AppleScript",aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"},contains:[e,t.C_NUMBER_MODE,{className:"built_in",begin:i(/\b/,a(...c),/\b/)},{className:"built_in",begin:/^\s*return\b/},{className:"literal",begin:/\b(text item delimiters|current application|missing value)\b/},{className:"keyword",begin:i(/\b/,a(...o),/\b/)},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[t.UNDERSCORE_TITLE_MODE,n]},...r],illegal:/\/\/|->|=>|\[\[/}}n(8111),n(1701),t.exports=s},2100:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={begin:"^'{3,}[ \\t]*$",relevance:10},n=[{begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/}],l=[{className:"strong",begin:/\*{2}([^\n]+?)\*{2}/},{className:"strong",begin:i(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/),relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],a=[{className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis",begin:i(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/),relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0}],s={className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},r={className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"};return{name:"AsciiDoc",aliases:["adoc"],contains:[t.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),t.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},r,s,...n,...l,...a,{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},e,{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}n(8111),n(1701),t.exports=a},2182:function(t){function e(t){const e={begin:"`[\\s\\S]"};return{name:"AutoHotkey",case_insensitive:!0,aliases:["ahk"],keywords:{keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",literal:"true false NOT AND OR",built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},contains:[e,t.inherit(t.QUOTE_STRING_MODE,{contains:[e]}),t.COMMENT(";","$",{relevance:0}),t.C_BLOCK_COMMENT_MODE,{className:"number",begin:t.NUMBER_RE,relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}t.exports=e},2184:function(t){function e(t){return{name:"Gradle",case_insensitive:!0,keywords:{keyword:"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,t.REGEXP_MODE]}}t.exports=e},2197:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={className:"params",begin:"\\(",end:"\\)"},n={variants:[t.COMMENT("!","$",{relevance:0}),t.COMMENT("^C[ ]","$",{relevance:0}),t.COMMENT("^C$","$",{relevance:0})]},l=/(_[a-z_\d]+)?/,a=/([de][+-]?\d+)?/,s={className:"number",variants:[{begin:i(/\b\d+/,/\.(\d*)/,a,l)},{begin:i(/\b\d+/,a,l)},{begin:i(/\.\d+/,a,l)}],relevance:0},r={className:"function",beginKeywords:"subroutine function program",illegal:"[${=\\n]",contains:[t.UNDERSCORE_TITLE_MODE,e]},o={className:"string",relevance:0,variants:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},c={literal:".False. .True.",keyword:"kind do concurrent local shared while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock endassociate public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure impure integer real character complex logical codimension dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data",built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image sync change team co_broadcast co_max co_min co_sum co_reduce"};return{name:"Fortran",case_insensitive:!0,aliases:["f90","f95"],keywords:c,illegal:/\/\*/,contains:[o,r,{begin:/^C\s*=(?!=)/,relevance:0},n,s]}}n(8111),n(1701),t.exports=a},2199:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e="HTTP/(2|1\\.[01])",n=/[A-Za-z][A-Za-z0-9-]*/,l={className:"attribute",begin:i("^",n,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[l,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+e+" \\d{3})",end:/$/,contains:[{className:"meta",begin:e},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+e+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:e},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},t.inherit(l,{relevance:0})]}}n(8111),n(1701),t.exports=a},2208:function(t){function e(t){const e={className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},n={className:"string",variants:[{begin:'"',end:'"'}]},l={className:"title",relevance:0,begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/},i={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[l]};return{name:"Flix",keywords:{literal:"true false",keyword:"case class def else enum if impl import in lat rel index let match namespace switch type yield with"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,e,n,i,t.C_NUMBER_MODE]}}t.exports=e},2218:function(t){function e(t){const e="do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where",n="abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate",l="bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window";return{name:"SAS",case_insensitive:!0,keywords:{literal:"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_",meta:e},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s;]/},{className:"variable",begin:/&[a-zA-Z_&][a-zA-Z0-9_]*\.?/},{className:"emphasis",begin:/^\s*datalines|cards.*;/,end:/^\s*;\s*$/},{className:"built_in",begin:"%("+l+")"},{className:"name",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{className:"meta",begin:"[^%]("+n+")[(]"},{className:"string",variants:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},t.COMMENT("\\*",";"),t.C_BLOCK_COMMENT_MODE]}}t.exports=e},2248:function(t,e,n){"use strict";var l=n(9504),i=Map.prototype;t.exports={Map:Map,set:l(i.set),get:l(i.get),has:l(i.has),remove:l(i["delete"]),proto:i}},2335:function(t){function e(t){const e={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},n=/[a-zA-Z@][a-zA-Z0-9_]*/,l={$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:l,illegal:"/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+i.keyword.split(" ").join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:i,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}t.exports=e},2363:function(t){function e(t){const e={className:"variable",variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{begin:"\\$_[A-Z]+"}],relevance:0},n=[t.C_BLOCK_COMMENT_MODE,t.HASH_COMMENT_MODE,t.COMMENT("--","$"),t.COMMENT("[^:]//","$")],l=t.inherit(t.TITLE_MODE,{variants:[{begin:"\\b_*rig[A-Z][A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]}),i=t.inherit(t.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{name:"LiveCode",case_insensitive:!1,keywords:{keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"},contains:[e,{className:"keyword",begin:"\\bend\\sif\\b"},{className:"function",beginKeywords:"function",end:"$",contains:[e,i,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l]},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",contains:[i,l],relevance:0},{beginKeywords:"command on",end:"$",contains:[e,i,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l]},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{begin:"<\\?"},{begin:"\\?>"}]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.BINARY_NUMBER_MODE,t.C_NUMBER_MODE,l].concat(n),illegal:";$|^\\[|^=|&|\\{"}}t.exports=e},2368:function(t){function e(t){return{name:"Mizar",keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",contains:[t.COMMENT("::","$")]}}t.exports=e},2425:function(t){function e(t){var e={className:"built_in",begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"},n={className:"symbol",begin:"[a-zA-Z0-9_]+@"},l={className:"keyword",begin:"<",end:">",contains:[e,n]};return e.contains=[l],n.contains=[l],{name:"AngelScript",aliases:["asc"],keywords:"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property",illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE],relevance:0},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},e,n,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",relevance:0,begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}t.exports=e},2472:function(t){function e(t){return{name:"FIX",contains:[{begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0}}t.exports=e},2474:function(t){function e(t){return{name:"Clean",aliases:["icl","dcl"],keywords:{keyword:"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr",built_in:"Int Real Char Bool",literal:"True False"},contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,{begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]}}t.exports=e},2604:function(t){function e(t){const e={className:"variable",begin:/\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/},n={className:"variable",begin:/\$+\{[\w.:-]+\}/},l={className:"variable",begin:/\$+\w+/,illegal:/\(\)\{\}/},i={className:"variable",begin:/\$+\([\w^.:-]+\)/},a={className:"params",begin:"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)"},s={className:"keyword",begin:/!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/},r={className:"meta",begin:/\$(\\[nrt]|\$)/},o={className:"class",begin:/\w+::\w+/},c={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{begin:"`",end:"`"}],illegal:/\n/,contains:[r,e,n,l,i]};return{name:"NSIS",case_insensitive:!1,keywords:{keyword:"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileWriteUTF16LE FileSeek FileWrite FileWriteByte FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetKnownFolderPath GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfRtlLanguage IfShellVarContextAll IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadAndSetImage LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestLongPathAware ManifestMaxVersionTested ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PEAddResource PEDllCharacteristics PERemoveResource PESubsysVer Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle",literal:"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib"},contains:[t.HASH_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.COMMENT(";","$",{relevance:0}),{className:"function",beginKeywords:"Function PageEx Section SectionGroup",end:"$"},c,s,n,l,i,a,o,t.NUMBER_MODE]}}t.exports=e},2619:function(t){function e(t){const e={variants:[t.COMMENT("--","$"),t.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},n={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e]},i={begin:/\{/,end:/\}/,contains:l.contains},a={className:"string",begin:"'\\\\?.",end:"'",illegal:"."};return{name:"Elm",keywords:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",contains:[{beginKeywords:"port effect module",end:"exposing",keywords:"port effect module where command subscription exposing",contains:[l,e],illegal:"\\W\\.|;"},{begin:"import",end:"$",keywords:"import as exposing",contains:[l,e],illegal:"\\W\\.|;"},{begin:"type",end:"$",keywords:"type alias",contains:[n,l,i,e]},{beginKeywords:"infix infixl infixr",end:"$",contains:[t.C_NUMBER_MODE,e]},{begin:"port",end:"$",keywords:"port",contains:[e]},a,t.QUOTE_STRING_MODE,t.C_NUMBER_MODE,n,t.inherit(t.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),e,{begin:"->|<-"}],illegal:/;/}}t.exports=e},2763:function(t,e,n){var l=n(1951),i=n(834);function a(t){this._input=t}function s(t,e,n){this.text=t,this.data=e,this.position=n}var r=new RegExp("([ \r\n\t]+)|(---?|[!-\\[\\]-‧‪-퟿豈-￿]|[\ud800-\udbff][\udc00-\udfff]|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff]))"),o=/\s*/;a.prototype._innerLex=function(t,e){var n=this._input;if(t===n.length)return new s("EOF",null,t);var a=l(r,n,t);if(null===a)throw new i("Unexpected character: '"+n[t]+"'",this,t);return a[2]?new s(a[2],null,t+a[2].length):e?this._innerLex(t+a[1].length,!0):new s(" ",null,t+a[1].length)};var c=/#[a-z0-9]+|[a-z]+/i;a.prototype._innerLexColor=function(t){var e,n=this._input,a=l(o,n,t)[0];if(t+=a.length,e=l(c,n,t))return new s(e[0],null,t+e[0].length);throw new i("Invalid color",this,t)};var d=/(-?)\s*(\d+(?:\.\d*)?|\.\d+)\s*([a-z]{2})/;a.prototype._innerLexSize=function(t){var e,n=this._input,a=l(o,n,t)[0];if(t+=a.length,e=l(d,n,t)){var r=e[3];if("em"!==r&&"ex"!==r)throw new i("Invalid unit: '"+r+"'",this,t);return new s(e[0],{number:+(e[1]+e[2]),unit:r},t+e[0].length)}throw new i("Invalid size",this,t)},a.prototype._innerLexWhitespace=function(t){var e=this._input,n=l(o,e,t)[0];return t+=n.length,new s(n[0],null,t)},a.prototype.lex=function(t,e){return"math"===e?this._innerLex(t,!0):"text"===e?this._innerLex(t,!1):"color"===e?this._innerLexColor(t):"size"===e?this._innerLexSize(t):"whitespace"===e?this._innerLexWhitespace(t):void 0},t.exports=a},2814:function(t,e,n){n(4114);var l=n(8564),i=n(2995),a=n(2763),s=n(840),r=n(4380),o=n(5990),c=n(834);function d(t,e){this.lexer=new a(t),this.settings=e}var u=o.ParseNode;function h(t,e){this.result=t,this.isFunction=e}d.prototype.expect=function(t,e){if(this.nextToken.text!==t)throw new c("Expected '"+t+"', got '"+this.nextToken.text+"'",this.lexer,this.nextToken.position);!1!==e&&this.consume()},d.prototype.consume=function(){this.pos=this.nextToken.position,this.nextToken=this.lexer.lex(this.pos,this.mode)},d.prototype.parse=function(){this.mode="math",this.pos=0,this.nextToken=this.lexer.lex(this.pos,this.mode);var t=this.parseInput();return t},d.prototype.parseInput=function(){var t=this.parseExpression(!1);return this.expect("EOF",!1),t};var m=["}","\\end","\\right","&","\\\\","\\cr"];d.prototype.parseExpression=function(t,e){var n=[];while(1){var l=this.nextToken,i=this.pos;if(-1!==m.indexOf(l.text))break;if(e&&l.text===e)break;var a=this.parseAtom();if(!a){if(!this.settings.throwOnError&&"\\"===l.text[0]){var s=this.handleUnsupportedCmd();n.push(s),i=l.position;continue}break}if(t&&"infix"===a.type){this.pos=i,this.nextToken=l;break}n.push(a)}return this.handleInfixNodes(n)},d.prototype.handleInfixNodes=function(t){for(var e,n=-1,l=0;lU)return this.parseFunction(i);throw new c("Got function '"+i.result+"' with no arguments as "+t,this.lexer,n+1)}return i.result}if(this.settings.throwOnError||"\\"!==this.nextToken.text[0])throw new c("Expected group after '"+e+"'",this.lexer,n+1);return this.handleUnsupportedCmd()},d.prototype.handleUnsupportedCmd=function(){for(var t=this.nextToken.text,e=[],n=0;ni))throw new c("Got function '"+o.result+"' as argument to '"+t+"'",this.lexer,this.pos-1);d=this.parseFunction(o)}else d=o.result;s.push(d),a.push(this.pos)}return s.push(a),s},d.prototype.parseSpecialGroup=function(t,e){var n,l=this.mode;if("original"===t&&(t=l),"color"===t||"size"===t){var i=this.nextToken;if(e&&"["!==i.text)return null;this.mode=t,this.expect(e?"[":"{");var a,s=this.nextToken;return this.mode=l,a="color"===t?s.text:s.data,this.consume(),this.expect(e?"]":"}"),new h(new u(t,a,l),!1)}if("text"===t){var r=this.lexer.lex(this.pos,"whitespace");this.pos=r.position}return this.mode=t,this.nextToken=this.lexer.lex(this.pos,t),n=e?this.parseOptionalGroup():this.parseGroup(),this.mode=l,this.nextToken=this.lexer.lex(this.pos,l),n},d.prototype.parseGroup=function(){if("{"===this.nextToken.text){this.consume();var t=this.parseExpression(!1);return this.expect("}"),new h(new u("ordgroup",t,this.mode),!1)}return this.parseSymbol()},d.prototype.parseOptionalGroup=function(){if("["===this.nextToken.text){this.consume();var t=this.parseExpression(!1,"]");return this.expect("]"),new h(new u("ordgroup",t,this.mode),!1)}return null},d.prototype.parseSymbol=function(){var t=this.nextToken;return l[t.text]?(this.consume(),new h(t.text,!0)):s[this.mode][t.text]?(this.consume(),new h(new u(s[this.mode][t.text].group,t.text,this.mode),!1)):null},d.prototype.ParseNode=u,t.exports=d},2876:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return s("(?=",t,")")}function a(t){return s("(",t,")?")}function s(...t){const e=t.map((t=>l(t))).join("");return e}function r(t){const e=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",r="<[^<>]+>",o="("+n+"|"+a(l)+"[a-zA-Z_]\\w*"+a(r)+")",c={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},d="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",u={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+d+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},h={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},m={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(u,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/},e,t.C_BLOCK_COMMENT_MODE]},U={className:"title",begin:a(l)+t.IDENT_RE,relevance:0},p=a(l)+t.IDENT_RE+"\\s*\\(",F=["asin","atan2","atan","calloc","ceil","cosh","cos","exit","exp","fabs","floor","fmod","fprintf","fputs","free","frexp","auto_ptr","deque","list","queue","stack","vector","map","set","pair","bitset","multiset","multimap","unordered_set","fscanf","future","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","tolower","toupper","labs","ldexp","log10","log","malloc","realloc","memchr","memcmp","memcpy","memset","modf","pow","printf","putchar","puts","scanf","sinh","sin","snprintf","sprintf","sqrt","sscanf","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","tanh","tan","unordered_map","unordered_multiset","unordered_multimap","priority_queue","make_pair","array","shared_ptr","abort","terminate","abs","acos","vfprintf","vprintf","vsprintf","endl","initializer_list","unique_ptr","complex","imaginary","std","string","wstring","cin","cout","cerr","clog","stdin","stdout","stderr","stringstream","istringstream","ostringstream"],b={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"_Bool _Complex _Imaginary",_relevance_hints:F,literal:"true false nullptr NULL"},Z={className:"function.dispatch",relevance:0,keywords:b,begin:s(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!while)/,t.IDENT_RE,i(/\s*\(/))},N=[Z,m,c,e,t.C_BLOCK_COMMENT_MODE,h,u],R={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:b,contains:N.concat([{begin:/\(/,end:/\)/,keywords:b,contains:N.concat(["self"]),relevance:0}]),relevance:0},S={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:b,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:b,relevance:0},{begin:p,returnBegin:!0,contains:[U],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[u,h]},{className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[e,t.C_BLOCK_COMMENT_MODE,u,h,c,{begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:["self",e,t.C_BLOCK_COMMENT_MODE,u,h,c]}]},c,e,t.C_BLOCK_COMMENT_MODE,m]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:b,illegal:"",keywords:b,contains:["self",c]},{begin:t.IDENT_RE+"::",keywords:b},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:m,strings:u,keywords:b}}}function o(t){const e=r(t),n=["c","h"],l=["cc","c++","h++","hpp","hh","hxx","cxx"];return e.disableAutodetect=!0,e.aliases=[],t.getLanguage("c")||e.aliases.push(...n),t.getLanguage("cpp")||e.aliases.push(...l),e}n(4114),n(8111),n(1701),t.exports=o},2942:function(t,e,n){function l(t){const e={keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"},n=t.COMMENT("%","$"),l={className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"},i=t.inherit(t.APOS_STRING_MODE,{relevance:0}),a=t.inherit(t.QUOTE_STRING_MODE,{relevance:0}),s={className:"subst",begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",relevance:0};a.contains=a.contains.slice(),a.contains.push(s);const r={className:"built_in",variants:[{begin:"<=>"},{begin:"<=",relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},o={className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]};return{name:"Mercury",aliases:["m","moo"],keywords:e,contains:[r,o,n,t.C_BLOCK_COMMENT_MODE,l,t.NUMBER_MODE,i,a,{begin:/:-/},{begin:/\.$/}]}}n(4114),t.exports=l},2955:function(t){function e(t){const e="Int Float String Bool Dynamic Void Array ";return{name:"Haxe",aliases:["hx"],keywords:{keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while "+e,built_in:"trace this",literal:"true false null _"},contains:[{className:"string",begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",end:/\W\}/}]},t.QUOTE_STRING_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,{className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elseif end error"}},{className:"type",begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",contains:[t.TITLE_MODE]},{className:"class",beginKeywords:"abstract",end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,excludeEnd:!0},t.TITLE_MODE],keywords:{keyword:"abstract from to"}},{className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,keywords:"class interface",contains:[{className:"keyword",begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{className:"type",begin:t.IDENT_RE,relevance:0}]},t.TITLE_MODE]},{className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,illegal:"\\S",contains:[t.TITLE_MODE]}],illegal:/<\//}}t.exports=e},2995:function(t,e,n){n(4114),n(8111),n(7588),n(1701);var l=n(7915),i=n(5990),a=n(834),s=i.ParseNode;function r(t,e){var n=[],l=[n],i=[];while(1){var r=t.parseExpression(!1,null);n.push(new s("ordgroup",r,t.mode));var o=t.nextToken.text;if("&"===o)t.consume();else{if("\\end"===o)break;if("\\\\"!==o&&"\\cr"!==o){var c=Math.min(t.pos+1,t.lexer._input.length);throw new a("Expected & or \\\\ or \\end",t.lexer,c)}var d=t.parseFunction();i.push(d.value.size),n=[],l.push(n)}}return e.body=l,e.rowGaps=i,new s(e.type,e,t.mode)}function o(e,n,l){"string"===typeof e&&(e=[e]),"number"===typeof n&&(n={numArgs:n});for(var i={numArgs:n.numArgs||0,argTypes:n.argTypes,greediness:1,allowedInText:!!n.allowedInText,numOptionalArgs:n.numOptionalArgs||0,handler:l},a=0;a0&&(o=2),e.value.cols[i]={type:"align",align:a,pregap:o,postgap:0}}return e}))},3004:function(t){function e(t){const e={className:"literal",begin:/[+-]/,relevance:0};return{name:"Brainfuck",aliases:["bf"],contains:[t.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|--)/,contains:[e]},e]}}t.exports=e},3076:function(t,e,n){n(8111),n(1701);const l=t=>({IMPORTANT:{className:"meta",begin:"!important"},HEXCOLOR:{className:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"},ATTRIBUTE_SELECTOR_MODE:{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]}}),i=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],s=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse();function c(t){return t?"string"===typeof t?t:t.source:null}function d(t){return u("(?=",t,")")}function u(...t){const e=t.map((t=>c(t))).join("");return e}function h(t){const e=l(t),n={className:"built_in",begin:/[\w-]+(?=\()/},c={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},u="and or not only",h=/@-?\w[\w]*(-\w+)*/,m="[a-zA-Z-][a-zA-Z0-9_-]*",U=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[t.C_BLOCK_COMMENT_MODE,c,t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+m,relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+s.join("|")+")"},{begin:"::("+r.join("|")+")"}]},{className:"attribute",begin:"\\b("+o.join("|")+")\\b"},{begin:":",end:"[;}]",contains:[e.HEXCOLOR,e.IMPORTANT,t.CSS_NUMBER_MODE,...U,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n]},{begin:d(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:h},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:u,attribute:a.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...U,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+i.join("|")+")\\b"}]}}t.exports=h},3085:function(t,e,n){function l(t){const e={literal:"true false null"},n=[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],l=[t.QUOTE_STRING_MODE,t.C_NUMBER_MODE],i={end:",",endsWithParent:!0,excludeEnd:!0,contains:l,keywords:e},a={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE],illegal:"\\n"},t.inherit(i,{begin:/:/})].concat(n),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[t.inherit(i)],illegal:"\\S"};return l.push(a,s),n.forEach((function(t){l.push(t)})),{name:"JSON",contains:l,keywords:e,illegal:"\\S"}}n(4114),t.exports=l},3159:function(t){function e(t){var e="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",n="далее ",l="возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",i=n+l,a="загрузитьизфайла ",s="вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ",r=a+s,o="разделительстраниц разделительстрок символтабуляции ",c="ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ",d="acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ",u="wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",h=o+c+d+u,m="webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ",U="автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы ",p="виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ",F="авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ",b="использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ",Z="отображениевремениэлементовпланировщика ",N="типфайлаформатированногодокумента ",R="обходрезультатазапроса типзаписизапроса ",S="видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ",W="доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ",V="типизмеренияпостроителязапроса ",Q="видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ",y="wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson ",T="видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных ",M="важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения ",g="режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ",E="расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии ",G="кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip ",B="звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ",J="направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ",k="httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений ",Y="важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",C=m+U+p+F+b+Z+N+R+S+W+V+Q+y+T+M+g+E+G+B+J+k+Y,X="comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ",I="comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",D=X+I,f="null истина ложь неопределено",L=t.inherit(t.NUMBER_MODE),w={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},x={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},z=t.inherit(t.C_LINE_COMMENT_MODE),v={className:"meta",begin:"#|&",end:"$",keywords:{$pattern:e,"meta-keyword":i+r},contains:[z]},O={className:"symbol",begin:"~",end:";|:",excludeEnd:!0},_={className:"function",variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",begin:e,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:e,keyword:"знач",literal:f},contains:[L,w,x]},z]},t.inherit(t.TITLE_MODE,{begin:e})]};return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:e,keyword:i,built_in:h,class:C,type:D,literal:f},contains:[v,_,z,O,L,w,x]}}t.exports=e},3321:function(t){function e(t){const e=t.COMMENT(/^\s*@?rem\b/,/$/,{relevance:10}),n={className:"symbol",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",relevance:0};return{name:"Batch file (DOS)",aliases:["bat","cmd"],case_insensitive:!0,illegal:/\/\*/,keywords:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shift sort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{className:"function",begin:n.begin,end:"goto:eof",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),e]},{className:"number",begin:"\\b\\d+",relevance:0},e]}}t.exports=e},3348:function(t){function e(t){const e="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n="(-|\\+)?\\d+([./]\\d+)?",l=n+"[+\\-]"+n+"i",i={$pattern:e,"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"},a={className:"literal",begin:"(#t|#f|#\\\\"+e+"|#\\\\.)"},s={className:"number",variants:[{begin:n,relevance:0},{begin:l,relevance:0},{begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},r=t.QUOTE_STRING_MODE,o=[t.COMMENT(";","$",{relevance:0}),t.COMMENT("#\\|","\\|#")],c={begin:e,relevance:0},d={className:"symbol",begin:"'"+e},u={endsWithParent:!0,relevance:0},h={variants:[{begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",contains:["self",a,r,s,c,d]}]},m={className:"name",relevance:0,begin:e,keywords:i},U={begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[m,{endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}],contains:[c]}]},p={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],contains:[U,m,u]};return u.contains=[a,s,r,c,d,h,p].concat(o),{name:"Scheme",illegal:/\S/,contains:[t.SHEBANG(),s,r,d,h,p].concat(o)}}t.exports=e},3406:function(t){function e(t){return{name:"Test Anything Protocol",case_insensitive:!0,contains:[t.HASH_COMMENT_MODE,{className:"meta",variants:[{begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:/---$/,end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]}]}}t.exports=e},3432:function(t){function e(t){return{name:"CMake",aliases:["cmake.in"],case_insensitive:!0,keywords:{keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"},contains:[{className:"variable",begin:/\$\{/,end:/\}/},t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE]}}t.exports=e},3517:function(t,e,n){"use strict";var l=n(9504),i=n(9039),a=n(4901),s=n(6955),r=n(7751),o=n(3706),c=function(){},d=r("Reflect","construct"),u=/^\s*(?:class|function)\b/,h=l(u.exec),m=!u.test(c),U=function(t){if(!a(t))return!1;try{return d(c,[],t),!0}catch(e){return!1}},p=function(t){if(!a(t))return!1;switch(s(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return m||!!h(u,o(t))}catch(e){return!0}};p.sham=!0,t.exports=!d||i((function(){var t;return U(U.call)||!U(Object)||!U((function(){t=!0}))||t}))?p:U},3711:function(t){var e="[0-9](_*[0-9])*",n=`\\.(${e})`,l="[0-9a-fA-F](_*[0-9a-fA-F])*",i={className:"number",variants:[{begin:`(\\b(${e})((${n})|\\.)?|(${n}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${n})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${n})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${l})\\.?|(${l})?\\.(${l}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${l})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(t){var e="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=e+"(<"+e+"(\\s*,\\s*"+e+")*>)?",l="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",a={className:"meta",begin:"@"+e,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]};const s=i;return{name:"Java",aliases:["jsp"],keywords:l,illegal:/<\/|#/,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface enum",end:/[{;=]/,excludeEnd:!0,relevance:1,keywords:"class interface enum",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"class",begin:"record\\s+"+t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,excludeEnd:!0,end:/[{;=]/,keywords:l,contains:[{beginKeywords:"record"},{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"function",begin:"("+n+"\\s+)+"+t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,contains:[{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[a,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,s,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},s,a]}}t.exports=a},3760:function(t){function e(t){const e={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]}]},n={className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},l="property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii";return{name:"Caché Object Script",case_insensitive:!0,aliases:["cls"],keywords:l,contains:[n,e,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)/,excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*\s*>/,subLanguage:"xml"}]}}t.exports=e},3831:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(?=",t,")")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",n={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",built_in:"proc lambda",literal:"true false nil"},l={className:"doctag",begin:"@[A-Za-z]+"},s={begin:"#<",end:">"},r=[t.COMMENT("#","$",{contains:[l]}),t.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),t.COMMENT("^__END__","\\n$")],o={className:"subst",begin:/#\{/,end:/\}/,keywords:n},c={className:"string",contains:[t.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:/<<[-~]?'?(\w+)\n(?:[^\n]*\n)*?\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,o]})]}]},d="[1-9](_?[0-9])*|0",u="[0-9](_?[0-9])*",h={className:"number",relevance:0,variants:[{begin:`\\b(${d})(\\.(${u}))?([eE][+-]?(${u})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},m={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:n},U=[c,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[t.inherit(t.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{begin:"("+t.IDENT_RE+"::)?"+t.IDENT_RE,relevance:0}]}].concat(r)},{className:"function",begin:a(/def\s+/,i(e+"\\s*(\\(|;|$)")),relevance:0,keywords:"def",end:"$|;",contains:[t.inherit(t.TITLE_MODE,{begin:e}),m].concat(r)},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[c,{begin:e}],relevance:0},h,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:n},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(s,r),relevance:0}].concat(s,r);o.contains=U,m.contains=U;const p="[>?]>",F="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",Z=[{begin:/^\s*=>/,starts:{end:"$",contains:U}},{className:"meta",begin:"^("+p+"|"+F+"|"+b+")(?=[ ])",starts:{end:"$",contains:U}}];return r.unshift(s),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:n,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(Z).concat(r).concat(U)}}n(8111),n(1701),t.exports=s},3865:function(t){function e(t){const e="[a-zA-Z_][\\w.]*",n="<\\?(lasso(script)?|=)",l="\\]|\\?>",i={$pattern:e+"|&[lg]t;",literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},a=t.COMMENT("\x3c!--","--\x3e",{relevance:0}),s={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[a]}},r={className:"meta",begin:"\\[/noprocess|"+n},o={className:"symbol",begin:"'"+e+"'"},c=[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.inherit(t.C_NUMBER_MODE,{begin:t.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),t.inherit(t.APOS_STRING_MODE,{illegal:null}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$]"+e},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:e,illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)"+e,relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[o]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[t.inherit(t.TITLE_MODE,{begin:e+"(=(?!>))?|[-+*/%](?!>)"})]}];return{name:"Lasso",aliases:["ls","lassoscript"],case_insensitive:!0,keywords:i,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[|"+n,returnEnd:!0,relevance:0,contains:[a]}},s,r,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",keywords:i,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[noprocess\\]|"+n,returnEnd:!0,contains:[a]}},s,r].concat(c)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(c)}}t.exports=e},3970:function(t){function e(t){return{name:"Stata",aliases:["do","ado"],case_insensitive:!0,keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},t.COMMENT("^[ \t]*\\*.*$",!1),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]}}t.exports=e},4036:function(t){function e(t){const e={$pattern:/\.?\w+/,keyword:"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained"},n=t.COMMENT(/\{/,/\}/,{relevance:0}),l=t.COMMENT("\\(\\*","\\*\\)",{relevance:10}),i={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},a={className:"string",begin:"(#\\d+)+"},s={className:"function",beginKeywords:"function constructor destructor procedure method",end:"[:;]",keywords:"function constructor|10 destructor|10 procedure|10 method|10",contains:[t.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:e,contains:[i,a]},n,l]};return{name:"Oxygene",case_insensitive:!0,keywords:e,illegal:'("|\\$[G-Zg-z]|\\/\\*||->)',contains:[n,l,t.C_LINE_COMMENT_MODE,i,a,t.NUMBER_MODE,s,{className:"class",begin:"=\\bclass\\b",end:"end;",keywords:e,contains:[i,a,n,l,t.C_LINE_COMMENT_MODE,s]}]}}t.exports=e},4149:function(t){"use strict";var e=RangeError;t.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},4176:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={ruleDeclaration:/^[a-zA-Z][a-zA-Z0-9-]*/,unexpectedChars:/[!@#$^&',?+~`|:]/},n=["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],l=t.COMMENT(/;/,/$/),a={className:"symbol",begin:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+){0,1}/},s={className:"symbol",begin:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+){0,1}/},r={className:"symbol",begin:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+){0,1}/},o={className:"symbol",begin:/%[si]/},c={className:"attribute",begin:i(e.ruleDeclaration,/(?=\s*=)/)};return{name:"Augmented Backus-Naur Form",illegal:e.unexpectedChars,keywords:n,contains:[c,l,a,s,r,o,t.QUOTE_STRING_MODE,t.NUMBER_MODE]}}n(8111),n(1701),t.exports=a},4186:function(t){function e(t){return{name:"Coq",keywords:{keyword:"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent Derive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with",built_in:"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with"},contains:[t.QUOTE_STRING_MODE,t.COMMENT("\\(\\*","\\*\\)"),t.C_NUMBER_MODE,{className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]}}t.exports=e},4224:function(t){function e(t){const e=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],n=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],l=["default","false","null","true"],i=["abstract","as","base","break","case","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],a=["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"],s={keyword:i.concat(a),built_in:e,literal:l},r=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),o={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},d=t.inherit(c,{illegal:/\n/}),u={className:"subst",begin:/\{/,end:/\}/,keywords:s},h=t.inherit(u,{illegal:/\n/}),m={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,h]},U={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},u]},p=t.inherit(U,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},h]});u.contains=[U,m,c,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,t.C_BLOCK_COMMENT_MODE],h.contains=[p,m,d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const F={variants:[U,m,c,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},b={begin:"<",end:">",contains:[{beginKeywords:"in out"},r]},Z=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",N={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:s,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},F,o,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},r,b,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[r,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[r,b,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+Z+"\\s+)+"+t.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:s,contains:[{beginKeywords:n.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<.+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,b],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,relevance:0,contains:[F,o,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},N]}}t.exports=e},4225:function(t){function e(t){const e="([ui](8|16|32|64|128|size)|f(32|64))?",n="abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",l="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",keyword:n,literal:"true false Some None Ok Err",built_in:l},illegal:""}]}}t.exports=e},4248:function(t){function e(t){const e={begin:/\|[A-Za-z]+:?/,keywords:{name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"},contains:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE]};return{name:"Django",aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",contains:[t.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),t.COMMENT(/\{#/,/#\}/),{className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name",begin:/\w+/,keywords:{name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"},starts:{endsWithParent:!0,keywords:"in by as",contains:[e],relevance:0}}]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[e]}]}}t.exports=e},4261:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(...t){const e=t.map((t=>l(t))).join("");return e}function a(t){const e={keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4d Promise"},n="[a-zA-Z_][a-zA-Z0-9\\._]*",l={className:"keyword",begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",returnEnd:!0}},a={className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},s={className:"attribute",begin:"\\bid\\s*:",starts:{className:"string",end:n,returnEnd:!1}},r={begin:n+"\\s*:",returnBegin:!0,contains:[{className:"attribute",begin:n,end:"\\s*:",excludeEnd:!0,relevance:0}],relevance:0},o={begin:i(n,/\s*\{/),end:/\{/,returnBegin:!0,relevance:0,contains:[t.inherit(t.TITLE_MODE,{begin:n})]};return{name:"QML",aliases:["qt"],case_insensitive:!1,keywords:e,contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:t.C_NUMBER_RE}],relevance:0},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{begin:/\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},a,l,{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{begin:"\\."+t.IDENT_RE,relevance:0},s,r,o],illegal:/#/}}n(8111),n(1701),t.exports=a},4305:function(t){function e(t){return{name:"Gherkin",aliases:["feature"],keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},t.HASH_COMMENT_MODE,{className:"string",begin:'"""',end:'"""'},t.QUOTE_STRING_MODE]}}t.exports=e},4350:function(t,e,n){function l(t){function e(t){return t.map((function(t){return t.split("").map((function(t){return"\\"+t})).join("")})).join("|")}const n="~?[a-z$_][0-9a-zA-Z$_]*",l="`?[A-Z$_][0-9a-zA-Z$_]*",i="'?[a-z$_][0-9a-z$_]*",a="\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*("+i+"\\s*(,"+i+"\\s*)*)?\\))?",s=n+"("+a+"){0,2}",r="("+e(["||","++","**","+.","*","/","*.","/.","..."])+"|\\|>|&&|==|===)",o="\\s+"+r+"\\s+",c={keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},d="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",u={className:"number",relevance:0,variants:[{begin:d},{begin:"\\(-"+d+"\\)"}]},h={className:"operator",relevance:0,begin:r},m=[{className:"identifier",relevance:0,begin:n},h,u],U=[t.QUOTE_STRING_MODE,h,{className:"module",begin:"\\b"+l,returnBegin:!0,end:".",contains:[{className:"identifier",begin:l,relevance:0}]}],p=[{className:"module",begin:"\\b"+l,returnBegin:!0,end:".",relevance:0,contains:[{className:"identifier",begin:l,relevance:0}]}],F={begin:n,end:"(,|\\n|\\))",relevance:0,contains:[h,{className:"typing",begin:":",end:"(,|\\n)",returnBegin:!0,relevance:0,contains:p}]},b={className:"function",relevance:0,keywords:c,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>",end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",variants:[{begin:n},{begin:s},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[F]}]},{begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};U.push(b);const Z={className:"constructor",begin:l+"\\(",end:"\\)",illegal:"\\n",keywords:c,contains:[t.QUOTE_STRING_MODE,h,{className:"params",begin:"\\b"+n}]},N={className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:c,end:"=>",relevance:0,contains:[Z,h,{relevance:0,className:"constructor",begin:l}]},R={className:"module-access",keywords:c,returnBegin:!0,variants:[{begin:"\\b("+l+"\\.)+"+n},{begin:"\\b("+l+"\\.)+\\(",end:"\\)",returnBegin:!0,contains:[b,{begin:"\\(",end:"\\)",skip:!0}].concat(U)},{begin:"\\b("+l+"\\.)+\\{",end:/\}/}],contains:U};return p.push(R),{name:"ReasonML",aliases:["re"],keywords:c,illegal:"(:-|:=|\\$\\{|\\+=)",contains:[t.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0},t.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:m},{className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:m},Z,{className:"operator",begin:o,illegal:"--\x3e",relevance:0},u,t.C_LINE_COMMENT_MODE,N,b,{className:"module-def",begin:"\\bmodule\\s+"+n+"\\s+"+l+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0,keywords:c,relevance:0,contains:[{className:"module",relevance:0,begin:l},{begin:/\{/,end:/\}/,skip:!0}].concat(U)},R]}}n(4114),n(8111),n(1701),t.exports=l},4380:function(t){var e,n=Array.prototype.indexOf,l=function(t,e){if(null==t)return-1;if(n&&t.indexOf===n)return t.indexOf(e);for(var l=0,i=t.length;l":">","<":"<",'"':""","'":"'"},c=/[&><"']/g;function d(t){return o[t]}function u(t){return(""+t).replace(c,d)}if("undefined"!==typeof document){var h=document.createElement("span");e="textContent"in h?function(t,e){t.textContent=e}:function(t,e){t.innerText=e}}function m(t){e(t,"")}t.exports={contains:i,deflt:a,escape:u,hyphenate:r,indexOf:l,setTextContent:e,clearNode:m}},4404:function(t,e,n){function l(t){var e="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",l={className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},i={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,i]},s=t.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r="[0-9]{4}(-[0-9][0-9]){0,2}",o="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",c="(\\.[0-9]*)?",d="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",u={className:"number",begin:"\\b"+r+o+c+d+"\\b"},h={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},m={begin:/\{/,end:/\}/,contains:[h],illegal:"\\n",relevance:0},U={begin:"\\[",end:"\\]",contains:[h],illegal:"\\n",relevance:0},p=[l,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},u,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},m,U,a],F=[...p];return F.pop(),F.push(s),h.contains=F,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:p}}n(4114),t.exports=l},4417:function(t){function e(t){return{name:"MEL",keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",illegal:"=0;e--)t[e]||t.splice(e,1);return t.join(" ")};function a(t,e,n,l,i,a){this.classes=t||[],this.children=e||[],this.height=n||0,this.depth=l||0,this.maxFontSize=i||0,this.style=a||{},this.attributes={}}function s(t,e,n,l){this.children=t||[],this.height=e||0,this.depth=n||0,this.maxFontSize=l||0}function r(t,e,n,l,i,a,s){this.value=t||"",this.height=e||0,this.depth=n||0,this.italic=l||0,this.skew=i||0,this.classes=a||[],this.style=s||{},this.maxFontSize=0}a.prototype.setAttribute=function(t,e){this.attributes[t]=e},a.prototype.toNode=function(){var t=document.createElement("span");for(var e in t.className=i(this.classes),this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&t.setAttribute(n,this.attributes[n]);for(var l=0;l0&&(e=document.createElement("span"),e.style.marginRight=this.italic+"em"),this.classes.length>0&&(e=e||document.createElement("span"),e.className=i(this.classes)),this.style)this.style.hasOwnProperty(n)&&(e=e||document.createElement("span"),e.style[n]=this.style[n]);return e?(e.appendChild(t),e):t},r.prototype.toMarkup=function(){var t=!1,e="0&&(n+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(n+=l.hyphenate(a)+":"+this.style[a]+";");n&&(t=!0,e+=' style="'+l.escape(n)+'"');var s=l.escape(this.value);return t?(e+=">",e+=s,e+="",e):s},t.exports={span:a,documentFragment:s,symbolNode:r}},4481:function(t){function e(t){const e="[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*",n="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*",l="and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока ",i="SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE ",a="CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ",s="ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME ",r="DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ",o="ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION ",c="JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ",d="ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE ",u="smHidden smMaximized smMinimized smNormal wmNo wmYes ",h="COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND ",m="COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE ",U="MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY ",p="NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY ",F="dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT ",b="CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ",Z="ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME ",N="PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ",R="ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE ",S="CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT ",W="STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER ",V="COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE ",Q="SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID ",y="RESULT_VAR_NAME RESULT_VAR_NAME_ENG ",T="AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID ",M="SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY ",g="SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY ",E="SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS ",G="SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS ",B="SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ",J="ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME ",k="TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ",Y="ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk ",C="EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE ",X="cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ",I="ISBL_SYNTAX NO_SYNTAX XML_SYNTAX ",D="WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY ",f="SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP ",L=i+a+s+r+o+c+d+u+h+m+U+p+F+b+Z+N+R+S+W+V+Q+y+T+M+g+E+G+B+J+k+Y+C+X+I+D+f,w="atUser atGroup atRole ",x="aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty ",z="apBegin apEnd ",v="alLeft alRight ",O="asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways ",_="cirCommon cirRevoked ",j="ctSignature ctEncode ctSignatureEncode ",K="clbUnchecked clbChecked clbGrayed ",P="ceISB ceAlways ceNever ",A="ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob ",H="cfInternal cfDisplay ",q="ciUnspecified ciWrite ciRead ",$="ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ",tt="ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton ",et="cctDate cctInteger cctNumeric cctPick cctReference cctString cctText ",nt="cltInternal cltPrimary cltGUI ",lt="dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange ",it="dssEdit dssInsert dssBrowse dssInActive ",at="dftDate dftShortDate dftDateTime dftTimeStamp ",st="dotDays dotHours dotMinutes dotSeconds ",rt="dtkndLocal dtkndUTC ",ot="arNone arView arEdit arFull ",ct="ddaView ddaEdit ",dt="emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ",ut="ecotFile ecotProcess ",ht="eaGet eaCopy eaCreate eaCreateStandardRoute ",mt="edltAll edltNothing edltQuery ",Ut="essmText essmCard ",pt="esvtLast esvtLastActive esvtSpecified ",Ft="edsfExecutive edsfArchive ",bt="edstSQLServer edstFile ",Zt="edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile ",Nt="vsDefault vsDesign vsActive vsObsolete ",Rt="etNone etCertificate etPassword etCertificatePassword ",St="ecException ecWarning ecInformation ",Wt="estAll estApprovingOnly ",Vt="evtLast evtLastActive evtQuery ",Qt="fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ",yt="ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch ",Tt="grhAuto grhX1 grhX2 grhX3 ",Mt="hltText hltRTF hltHTML ",gt="iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG ",Et="im8bGrayscale im24bRGB im1bMonochrome ",Gt="itBMP itJPEG itWMF itPNG ",Bt="ikhInformation ikhWarning ikhError ikhNoIcon ",Jt="icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler ",kt="isShow isHide isByUserSettings ",Yt="jkJob jkNotice jkControlJob ",Ct="jtInner jtLeft jtRight jtFull jtCross ",Xt="lbpAbove lbpBelow lbpLeft lbpRight ",It="eltPerConnection eltPerUser ",Dt="sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac ",ft="sfsItalic sfsStrikeout sfsNormal ",Lt="ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents ",wt="mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom ",xt="vtEqual vtGreaterOrEqual vtLessOrEqual vtRange ",zt="rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth ",vt="rdWindow rdFile rdPrinter ",Ot="rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument ",_t="reOnChange reOnChangeValues ",jt="ttGlobal ttLocal ttUser ttSystem ",Kt="ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal ",Pt="smSelect smLike smCard ",At="stNone stAuthenticating stApproving ",Ht="sctString sctStream ",qt="sstAnsiSort sstNaturalSort ",$t="svtEqual svtContain ",te="soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown ",ee="tarAbortByUser tarAbortByWorkflowException ",ne="tvtAllWords tvtExactPhrase tvtAnyWord ",le="usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp ",ie="utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected ",ae="btAnd btDetailAnd btOr btNotOr btOnly ",se="vmView vmSelect vmNavigation ",re="vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection ",oe="wfatPrevious wfatNext wfatCancel wfatFinish ",ce="wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 ",de="wfetQueryParameter wfetText wfetDelimiter wfetLabel ",ue="wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate ",he="wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal ",me="wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal ",Ue="waAll waPerformers waManual ",pe="wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause ",Fe="wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection ",be="wiLow wiNormal wiHigh ",Ze="wrtSoft wrtHard ",Ne="wsInit wsRunning wsDone wsControlled wsAborted wsContinued ",Re="wtmFull wtmFromCurrent wtmOnlyCurrent ",Se=w+x+z+v+O+_+j+K+P+A+H+q+$+tt+et+nt+lt+it+at+st+rt+ot+ct+dt+ut+ht+mt+Ut+pt+Ft+bt+Zt+Nt+Rt+St+Wt+Vt+Qt+yt+Tt+Mt+gt+Et+Gt+Bt+Jt+kt+Yt+Ct+Xt+It+Dt+ft+Lt+wt+xt+zt+vt+Ot+_t+jt+Kt+Pt+At+Ht+qt+$t+te+ee+ne+le+ie+ae+se+re+oe+ce+de+ue+he+me+Ue+pe+Fe+be+Ze+Ne+Re,We="AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр ",Ve="AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач ",Qe="IApplication IAccessRights IAccountRepository IAccountSelectionRestrictions IAction IActionList IAdministrationHistoryDescription IAnchors IApplication IArchiveInfo IAttachment IAttachmentList ICheckListBox ICheckPointedList IColumn IComponent IComponentDescription IComponentToken IComponentTokenFactory IComponentTokenInfo ICompRecordInfo IConnection IContents IControl IControlJob IControlJobInfo IControlList ICrypto ICrypto2 ICustomJob ICustomJobInfo ICustomListBox ICustomObjectWizardStep ICustomWork ICustomWorkInfo IDataSet IDataSetAccessInfo IDataSigner IDateCriterion IDateRequisite IDateRequisiteDescription IDateValue IDeaAccessRights IDeaObjectInfo IDevelopmentComponentLock IDialog IDialogFactory IDialogPickRequisiteItems IDialogsFactory IDICSFactory IDocRequisite IDocumentInfo IDualListDialog IECertificate IECertificateInfo IECertificates IEditControl IEditorForm IEdmsExplorer IEdmsObject IEdmsObjectDescription IEdmsObjectFactory IEdmsObjectInfo IEDocument IEDocumentAccessRights IEDocumentDescription IEDocumentEditor IEDocumentFactory IEDocumentInfo IEDocumentStorage IEDocumentVersion IEDocumentVersionListDialog IEDocumentVersionSource IEDocumentWizardStep IEDocVerSignature IEDocVersionState IEnabledMode IEncodeProvider IEncrypter IEvent IEventList IException IExternalEvents IExternalHandler IFactory IField IFileDialog IFolder IFolderDescription IFolderDialog IFolderFactory IFolderInfo IForEach IForm IFormTitle IFormWizardStep IGlobalIDFactory IGlobalIDInfo IGrid IHasher IHistoryDescription IHyperLinkControl IImageButton IImageControl IInnerPanel IInplaceHint IIntegerCriterion IIntegerList IIntegerRequisite IIntegerValue IISBLEditorForm IJob IJobDescription IJobFactory IJobForm IJobInfo ILabelControl ILargeIntegerCriterion ILargeIntegerRequisite ILargeIntegerValue ILicenseInfo ILifeCycleStage IList IListBox ILocalIDInfo ILocalization ILock IMemoryDataSet IMessagingFactory IMetadataRepository INotice INoticeInfo INumericCriterion INumericRequisite INumericValue IObject IObjectDescription IObjectImporter IObjectInfo IObserver IPanelGroup IPickCriterion IPickProperty IPickRequisite IPickRequisiteDescription IPickRequisiteItem IPickRequisiteItems IPickValue IPrivilege IPrivilegeList IProcess IProcessFactory IProcessMessage IProgress IProperty IPropertyChangeEvent IQuery IReference IReferenceCriterion IReferenceEnabledMode IReferenceFactory IReferenceHistoryDescription IReferenceInfo IReferenceRecordCardWizardStep IReferenceRequisiteDescription IReferencesFactory IReferenceValue IRefRequisite IReport IReportFactory IRequisite IRequisiteDescription IRequisiteDescriptionList IRequisiteFactory IRichEdit IRouteStep IRule IRuleList ISchemeBlock IScript IScriptFactory ISearchCriteria ISearchCriterion ISearchDescription ISearchFactory ISearchFolderInfo ISearchForObjectDescription ISearchResultRestrictions ISecuredContext ISelectDialog IServerEvent IServerEventFactory IServiceDialog IServiceFactory ISignature ISignProvider ISignProvider2 ISignProvider3 ISimpleCriterion IStringCriterion IStringList IStringRequisite IStringRequisiteDescription IStringValue ISystemDialogsFactory ISystemInfo ITabSheet ITask ITaskAbortReasonInfo ITaskCardWizardStep ITaskDescription ITaskFactory ITaskInfo ITaskRoute ITextCriterion ITextRequisite ITextValue ITreeListSelectDialog IUser IUserList IValue IView IWebBrowserControl IWizard IWizardAction IWizardFactory IWizardFormElement IWizardParam IWizardPickParam IWizardReferenceParam IWizardStep IWorkAccessRights IWorkDescription IWorkflowAskableParam IWorkflowAskableParams IWorkflowBlock IWorkflowBlockResult IWorkflowEnabledMode IWorkflowParam IWorkflowPickParam IWorkflowReferenceParam IWorkState IWorkTreeCustomNode IWorkTreeJobNode IWorkTreeTaskNode IXMLEditorForm SBCrypto ",ye=L+Se,Te=Ve,Me="null true false nil ",ge={className:"number",begin:t.NUMBER_RE,relevance:0},Ee={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},Ge={className:"doctag",begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0},Be={className:"comment",begin:"//",end:"$",relevance:0,contains:[t.PHRASAL_WORDS_MODE,Ge]},Je={className:"comment",begin:"/\\*",end:"\\*/",relevance:0,contains:[t.PHRASAL_WORDS_MODE,Ge]},ke={variants:[Be,Je]},Ye={$pattern:e,keyword:l,built_in:ye,class:Te,literal:Me},Ce={begin:"\\.\\s*"+t.UNDERSCORE_IDENT_RE,keywords:Ye,relevance:0},Xe={className:"type",begin:":[ \\t]*("+Qe.trim().replace(/\s/g,"|")+")",end:"[ \\t]*=",excludeEnd:!0},Ie={className:"variable",keywords:Ye,begin:e,relevance:0,contains:[Xe,Ce]},De=n+"\\(",fe={className:"title",keywords:{$pattern:e,built_in:We},begin:De,end:"\\(",returnBegin:!0,excludeEnd:!0},Le={className:"function",begin:De,end:"\\)$",returnBegin:!0,keywords:Ye,illegal:"[\\[\\]\\|\\$\\?%,~#@]",contains:[fe,Ce,Ie,Ee,ge,ke]};return{name:"ISBL",case_insensitive:!0,keywords:Ye,illegal:"\\$|\\?|%|,|;$|~|#|@|l(t))).join("");return e}function r(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function o(t){const e=s(/[A-Z_]/,a(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),n=/[A-Za-z0-9._:-]+/,l={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=t.inherit(o,{begin:/\(/,end:/\)/}),d=t.inherit(t.APOS_STRING_MODE,{className:"meta-string"}),u=t.inherit(t.QUOTE_STRING_MODE,{className:"meta-string"}),h={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[o,u,d,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[o,c,u,d]}]}]},t.COMMENT(//,{relevance:10}),{begin://,relevance:10},l,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[h],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[h],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:s(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:e,relevance:0,starts:h}]},{className:"tag",begin:s(/<\//,i(s(e,/>/))),contains:[{className:"name",begin:e,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}n(8111),n(1701),t.exports=o},4579:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return s("(",t,")*")}function a(t){return s("(",t,")?")}function s(...t){const e=t.map((t=>l(t))).join("");return e}function r(...t){const e="("+t.map((t=>l(t))).join("|")+")";return e}function o(t){const e={"builtin-name":["action","bindattr","collection","component","concat","debugger","each","each-in","get","hash","if","in","input","link-to","loc","log","lookup","mut","outlet","partial","query-params","render","template","textarea","unbound","unless","view","with","yield"]},n={literal:["true","false","undefined","null"]},l=/""|"[^"]+"/,o=/''|'[^']+'/,c=/\[\]|\[[^\]]+\]/,d=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,u=/(\.|\/)/,h=r(l,o,c,d),m=s(a(/\.|\.\/|\//),h,i(s(u,h))),U=s("(",c,"|",d,")(?==)"),p={begin:m,lexemes:/[\w.\/]+/},F=t.inherit(p,{keywords:n}),b={begin:/\(/,end:/\)/},Z={className:"attr",begin:U,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,F,b]}}},N={begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},R={contains:[t.NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,N,Z,F,b],returnEnd:!0},S=t.inherit(p,{className:"name",keywords:e,starts:t.inherit(R,{end:/\)/})});b.contains=[S];const W=t.inherit(p,{keywords:e,className:"name",starts:t.inherit(R,{end:/\}\}/})}),V=t.inherit(p,{keywords:e,className:"name"}),Q=t.inherit(p,{className:"name",keywords:e,starts:t.inherit(R,{end:/\}\}/})}),y={begin:/\\\{\{/,skip:!0},T={begin:/\\\\(?=\{\{)/,skip:!0};return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[y,T,t.COMMENT(/\{\{!--/,/--\}\}/),t.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[W],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[V]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[W]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[V]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[Q]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[Q]}]}}n(8111),n(1701),t.exports=o},4610:function(t,e,n){function l(t){return t?"string"===typeof t?t:t.source:null}function i(t){return a("(",t,")?")}function a(...t){const e=t.map((t=>l(t))).join("");return e}function s(t){const e=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",a="<[^<>]+>",s="("+n+"|"+i(l)+"[a-zA-Z_]\\w*"+i(a)+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(c,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/},e,t.C_BLOCK_COMMENT_MODE]},h={className:"title",begin:i(l)+t.IDENT_RE,relevance:0},m=i(l)+t.IDENT_RE+"\\s*\\(",U={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},p=[u,r,e,t.C_BLOCK_COMMENT_MODE,d,c],F={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:U,contains:p.concat([{begin:/\(/,end:/\)/,keywords:U,contains:p.concat(["self"]),relevance:0}]),relevance:0},b={className:"function",begin:"("+s+"[\\*&\\s]+)+"+m,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:U,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:U,relevance:0},{begin:m,returnBegin:!0,contains:[h],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:U,relevance:0,contains:[e,t.C_BLOCK_COMMENT_MODE,c,d,r,{begin:/\(/,end:/\)/,keywords:U,relevance:0,contains:["self",e,t.C_BLOCK_COMMENT_MODE,c,d,r]}]},r,e,t.C_BLOCK_COMMENT_MODE,u]};return{name:"C",aliases:["h"],keywords:U,disableAutodetect:!0,illegal:"",keywords:U,contains:["self",r]},{begin:t.IDENT_RE+"::",keywords:U},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:u,strings:c,keywords:U}}}n(8111),n(1701),t.exports=s},4652:function(t,e,n){function l(t){const e=t.COMMENT("--","$"),n="[a-zA-Z_][a-zA-Z_0-9$]*",l="\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",i="<<\\s*"+n+"\\s*>>",a="ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ",s="SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",r="ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN ",o="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",c=o.trim().split(" ").map((function(t){return t.split("|")[0]})).join("|"),d="CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ",u="FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ",h="SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED ",m="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST ",U=m.trim().split(" ").map((function(t){return t.split("|")[0]})).join("|");return{name:"PostgreSQL",aliases:["postgres","postgresql"],case_insensitive:!0,keywords:{keyword:a+r+s,built_in:d+u+h},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/,contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{begin:/\bGROUPING\s+SETS\b/},{begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/},{begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",end:t.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/},{begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,keywords:{keyword:"RETURNS",type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"}},{begin:"\\b("+U+")\\s*\\("},{begin:"\\.("+c+")\\b"},{begin:"\\b("+c+")\\s+PATH\\b",keywords:{keyword:"PATH",type:o.replace("PATH ","")}},{className:"type",begin:"\\b("+c+")\\b"},{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],relevance:10},t.END_SAME_AS_BEGIN({begin:l,end:l,contains:[{subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],endsWithParent:!0}]}),{begin:'"',end:'"',contains:[{begin:'""'}]},t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,e,{className:"meta",variants:[{begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{className:"symbol",begin:i,relevance:10}]}}n(8111),n(1701),t.exports=l},4663:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return yB}});var l={};n.r(l),n.d(l,{decode:function(){return I},encode:function(){return w},format:function(){return x},parse:function(){return at}});var i={};n.r(i),n.d(i,{Any:function(){return ot},Cc:function(){return ct},Cf:function(){return dt},P:function(){return st},S:function(){return rt},Z:function(){return ut}});var a={};n.r(a),n.d(a,{arrayReplaceAt:function(){return wt},assign:function(){return Lt},escapeHtml:function(){return ee},escapeRE:function(){return le},fromCodePoint:function(){return zt},has:function(){return ft},isMdAsciiPunct:function(){return re},isPunctChar:function(){return se},isSpace:function(){return ie},isString:function(){return It},isValidEntityCode:function(){return xt},isWhiteSpace:function(){return ae},lib:function(){return ce},normalizeReference:function(){return oe},unescapeAll:function(){return At},unescapeMd:function(){return Pt}});var s={};n.r(s),n.d(s,{parseLinkDestination:function(){return ue},parseLinkLabel:function(){return de},parseLinkTitle:function(){return he}});var r=n(6768),o=n(4232);const c={class:"article-view"},d={key:0,class:"container"},u={class:"article-title"},h={key:0,class:"article-tags",style:{"margin-left":"3rem"}},m={key:0,class:"article-official"},U={key:1,class:"article-highlight"},p={key:2,class:"article-top"},F={class:"meta-wrapper",style:{"margin-left":"3rem"}},b={class:"article-meta"},Z={class:"article-author-info"},N={class:"article-author"},R={class:"article-date"},S={key:1,class:"container"};function W(t,e,n,l,i,a){const s=(0,r.g2)("Navbar"),W=(0,r.g2)("UserMeta"),V=(0,r.g2)("MarkdownArticle"),Q=(0,r.g2)("CommentSection"),y=(0,r.g2)("Loading");return(0,r.uX)(),(0,r.CE)("div",c,[(0,r.bF)(s),i.article?((0,r.uX)(),(0,r.CE)("div",d,[(0,r.Lk)("h1",u,(0,o.v_)(i.article.title||"草稿预览"),1),a.isPreviewMode?(0,r.Q3)("",!0):((0,r.uX)(),(0,r.CE)("div",h,[i.article.official?((0,r.uX)(),(0,r.CE)("span",m,"官方")):(0,r.Q3)("",!0),i.article.highlight?((0,r.uX)(),(0,r.CE)("span",U,"优质")):(0,r.Q3)("",!0),i.article.top?((0,r.uX)(),(0,r.CE)("span",p,"置顶")):(0,r.Q3)("",!0)])),(0,r.Lk)("div",F,[(0,r.Lk)("div",b,[(0,r.Lk)("div",Z,[(0,r.Lk)("span",N,[(0,r.bF)(W,{id:i.article.user_id},null,8,["id"])]),(0,r.Lk)("span",R,"📅 最后更新于 "+(0,o.v_)(a.formatDate(i.article.updated_at)),1)])])]),(0,r.bF)(V,{content:i.article.content},null,8,["content"]),a.isPreviewMode?(0,r.Q3)("",!0):((0,r.uX)(),(0,r.Wv)(Q,{key:1,articleId:t.$route.params.id},null,8,["articleId"]))])):i.loading?((0,r.uX)(),(0,r.CE)("div",S,[(0,r.bF)(y,{visible:!0,text:"内容加载中,请稍后..."})])):(0,r.Q3)("",!0)])}n(4114);var V=n(1927);const Q={class:"article-container"},y={key:0},T={class:"toc-header"},M={class:"toc-list"},g=["href","onClick"],E={key:1,class:"toc-empty"},G={class:"article-content"},B={key:0,class:"loading"},J=["innerHTML"];function k(t,e,n,l,i,a){return(0,r.uX)(),(0,r.CE)("div",Q,[(0,r.Lk)("div",{class:(0,o.C4)(["toc-overlay",{"is-active":i.isTocActive&&i.isMobile}]),onClick:e[0]||(e[0]=(...t)=>a.toggleToc&&a.toggleToc(...t))},null,2),(0,r.Lk)("div",{class:"toc-toggle",onClick:e[1]||(e[1]=(...t)=>a.toggleToc&&a.toggleToc(...t))},e[3]||(e[3]=[(0,r.Lk)("span",null,"目录",-1)])),(0,r.Lk)("div",{class:(0,o.C4)(["article-toc",{"is-active":i.isTocActive}])},[i.headings.length>0?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.Lk)("div",T,[e[4]||(e[4]=(0,r.Lk)("div",{class:"toc-title"},"目录",-1)),(0,r.Lk)("div",{class:"toc-close",onClick:e[2]||(e[2]=(...t)=>a.toggleToc&&a.toggleToc(...t))},"✕")]),(0,r.Lk)("ul",M,[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.headings,((t,e)=>((0,r.uX)(),(0,r.CE)("li",{key:e,class:(0,o.C4)([`level-${t.level}`,{active:i.activeHeading===t.id}])},[(0,r.Lk)("a",{href:`#${t.id}`,onClick:e=>a.scrollToHeading(t.id)},(0,o.v_)(t.text),9,g)],2)))),128))])])):((0,r.uX)(),(0,r.CE)("div",E,"暂无目录"))],2),(0,r.Lk)("div",G,[i.renderContent?((0,r.uX)(),(0,r.CE)("div",{key:1,innerHTML:i.renderContent,ref:"articleContent"},null,8,J)):((0,r.uX)(),(0,r.CE)("div",B,"加载中..."))])])}n(8111),n(7588),n(1701),n(2489);const Y={};function C(t){let e=Y[t];if(e)return e;e=Y[t]=[];for(let n=0;n<128;n++){const t=String.fromCharCode(n);e.push(t)}for(let n=0;n=55296&&t<=57343?"���":String.fromCharCode(t),l+=6;continue}}if(240===(248&a)&&l+91114111?e+="����":(t-=65536,e+=String.fromCharCode(55296+(t>>10),56320+(1023&t))),l+=9;continue}}e+="�"}}return e}))}X.defaultChars=";/?:@&=+$,#",X.componentChars="";var I=X;const D={};function f(t){let e=D[t];if(e)return e;e=D[t]=[];for(let n=0;n<128;n++){const t=String.fromCharCode(n);/^[0-9a-z]$/i.test(t)?e.push(t):e.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2))}for(let n=0;n=55296&&e<=57343){if(e>=55296&&e<=56319&&a+1=56320&&e<=57343){i+=encodeURIComponent(t[a]+t[a+1]),a++;continue}}i+="%EF%BF%BD"}else i+=encodeURIComponent(t[a])}return i}L.defaultChars=";/?:@&=+$,-_.!~*'()#",L.componentChars="-_.!~*'()";var w=L;function x(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function z(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}const v=/^([a-z0-9.+-]+:)/i,O=/:[0-9]*$/,_=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,j=["<",">",'"',"`"," ","\r","\n","\t"],K=["{","}","|","\\","^","`"].concat(j),P=["'"].concat(K),A=["%","/","?",";","#"].concat(P),H=["/","?","#"],q=255,$=/^[+a-z0-9A-Z_-]{0,63}$/,tt=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,et={javascript:!0,"javascript:":!0},nt={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function lt(t,e){if(t&&t instanceof z)return t;const n=new z;return n.parse(t,e),n}z.prototype.parse=function(t,e){let n,l,i,a=t;if(a=a.trim(),!e&&1===t.split("#").length){const t=_.exec(a);if(t)return this.pathname=t[1],t[2]&&(this.search=t[2]),this}let s=v.exec(a);if(s&&(s=s[0],n=s.toLowerCase(),this.protocol=s,a=a.substr(s.length)),(e||s||a.match(/^\/\/[^@\/]+@[^@\/]+/))&&(i="//"===a.substr(0,2),!i||s&&et[s]||(a=a.substr(2),this.slashes=!0)),!et[s]&&(i||s&&!nt[s])){let t,e,n=-1;for(let r=0;r127?l+="x":l+=n[t];if(!l.match($)){const l=t.slice(0,e),i=t.slice(e+1),s=n.match(tt);s&&(l.push(s[1]),i.unshift(s[2])),i.length&&(a=i.join(".")+a),this.hostname=l.join(".");break}}}}this.hostname.length>q&&(this.hostname=""),s&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const r=a.indexOf("#");-1!==r&&(this.hash=a.substr(r),a=a.slice(0,r));const o=a.indexOf("?");return-1!==o&&(this.search=a.substr(o),a=a.slice(0,o)),a&&(this.pathname=a),nt[n]&&this.hostname&&!this.pathname&&(this.pathname=""),this},z.prototype.parseHost=function(t){let e=O.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};var it,at=lt,st=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,rt=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,ot=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ct=/[\0-\x1F\x7F-\x9F]/,dt=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,ut=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,ht=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((t=>t.charCodeAt(0)))),mt=new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((t=>t.charCodeAt(0))));const Ut=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),pt=null!==(it=String.fromCodePoint)&&void 0!==it?it:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};function Ft(t){var e;return t>=55296&&t<=57343||t>1114111?65533:null!==(e=Ut.get(t))&&void 0!==e?e:t}var bt;(function(t){t[t["NUM"]=35]="NUM",t[t["SEMI"]=59]="SEMI",t[t["EQUALS"]=61]="EQUALS",t[t["ZERO"]=48]="ZERO",t[t["NINE"]=57]="NINE",t[t["LOWER_A"]=97]="LOWER_A",t[t["LOWER_F"]=102]="LOWER_F",t[t["LOWER_X"]=120]="LOWER_X",t[t["LOWER_Z"]=122]="LOWER_Z",t[t["UPPER_A"]=65]="UPPER_A",t[t["UPPER_F"]=70]="UPPER_F",t[t["UPPER_Z"]=90]="UPPER_Z"})(bt||(bt={}));const Zt=32;var Nt,Rt,St;function Wt(t){return t>=bt.ZERO&&t<=bt.NINE}function Vt(t){return t>=bt.UPPER_A&&t<=bt.UPPER_F||t>=bt.LOWER_A&&t<=bt.LOWER_F}function Qt(t){return t>=bt.UPPER_A&&t<=bt.UPPER_Z||t>=bt.LOWER_A&&t<=bt.LOWER_Z||Wt(t)}function yt(t){return t===bt.EQUALS||Qt(t)}(function(t){t[t["VALUE_LENGTH"]=49152]="VALUE_LENGTH",t[t["BRANCH_LENGTH"]=16256]="BRANCH_LENGTH",t[t["JUMP_TABLE"]=127]="JUMP_TABLE"})(Nt||(Nt={})),function(t){t[t["EntityStart"]=0]="EntityStart",t[t["NumericStart"]=1]="NumericStart",t[t["NumericDecimal"]=2]="NumericDecimal",t[t["NumericHex"]=3]="NumericHex",t[t["NamedEntity"]=4]="NamedEntity"}(Rt||(Rt={})),function(t){t[t["Legacy"]=0]="Legacy",t[t["Strict"]=1]="Strict",t[t["Attribute"]=2]="Attribute"}(St||(St={}));class Tt{constructor(t,e,n){this.decodeTree=t,this.emitCodePoint=e,this.errors=n,this.state=Rt.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=St.Strict}startEntity(t){this.decodeMode=t,this.state=Rt.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case Rt.EntityStart:return t.charCodeAt(e)===bt.NUM?(this.state=Rt.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=Rt.NamedEntity,this.stateNamedEntity(t,e));case Rt.NumericStart:return this.stateNumericStart(t,e);case Rt.NumericDecimal:return this.stateNumericDecimal(t,e);case Rt.NumericHex:return this.stateNumericHex(t,e);case Rt.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(t.charCodeAt(e)|Zt)===bt.LOWER_X?(this.state=Rt.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=Rt.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,n,l){if(e!==n){const i=n-e;this.result=this.result*Math.pow(l,i)+parseInt(t.substr(e,i),l),this.consumed+=i}}stateNumericHex(t,e){const n=e;while(e>14;for(;e>14,0!==i){if(a===bt.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==St.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:e,decodeTree:n}=this,l=(n[e]&Nt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,l,this.consumed),null===(t=this.errors)||void 0===t||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,n){const{decodeTree:l}=this;return this.emitCodePoint(1===e?l[t]&~Nt.VALUE_LENGTH:l[t+1],n),3===e&&this.emitCodePoint(l[t+2],n),n}end(){var t;switch(this.state){case Rt.NamedEntity:return 0===this.result||this.decodeMode===St.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case Rt.NumericDecimal:return this.emitNumericEntity(0,2);case Rt.NumericHex:return this.emitNumericEntity(0,3);case Rt.NumericStart:return null===(t=this.errors)||void 0===t||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Rt.EntityStart:return 0}}}function Mt(t){let e="";const n=new Tt(t,(t=>e+=pt(t)));return function(t,l){let i=0,a=0;while((a=t.indexOf("&",a))>=0){e+=t.slice(i,a),n.startEntity(l);const s=n.write(t,a+1);if(s<0){i=a+n.end();break}i=a+s,a=0===s?i+1:i}const s=e+t.slice(i);return e="",s}}function gt(t,e,n,l){const i=(e&Nt.BRANCH_LENGTH)>>7,a=e&Nt.JUMP_TABLE;if(0===i)return 0!==a&&l===a?n:-1;if(a){const e=l-a;return e<0||e>=i?-1:t[n+e]-1}let s=n,r=s+i-1;while(s<=r){const e=s+r>>>1,n=t[e];if(nl))return t[e+i];r=e-1}}return-1}const Et=Mt(ht);Mt(mt);function Gt(t,e=St.Legacy){return Et(t,e)}function Bt(t){for(let e=1;e'"]/g,Jt),kt(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),kt(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var Yt,Ct;function Xt(t){return Object.prototype.toString.call(t)}function It(t){return"[object String]"===Xt(t)}(function(t){t[t["XML"]=0]="XML",t[t["HTML"]=1]="HTML"})(Yt||(Yt={})),function(t){t[t["UTF8"]=0]="UTF8",t[t["ASCII"]=1]="ASCII",t[t["Extensive"]=2]="Extensive",t[t["Attribute"]=3]="Attribute",t[t["Text"]=4]="Text"}(Ct||(Ct={}));const Dt=Object.prototype.hasOwnProperty;function ft(t,e){return Dt.call(t,e)}function Lt(t){const e=Array.prototype.slice.call(arguments,1);return e.forEach((function(e){if(e){if("object"!==typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach((function(n){t[n]=e[n]}))}})),t}function wt(t,e,n){return[].concat(t.slice(0,e),n,t.slice(e+1))}function xt(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(65535!==(65535&t)&&65534!==(65535&t)&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function zt(t){if(t>65535){t-=65536;const e=55296+(t>>10),n=56320+(1023&t);return String.fromCharCode(e,n)}return String.fromCharCode(t)}const vt=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,Ot=/&([a-z#][a-z0-9]{1,31});/gi,_t=new RegExp(vt.source+"|"+Ot.source,"gi"),jt=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function Kt(t,e){if(35===e.charCodeAt(0)&&jt.test(e)){const n="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return xt(n)?zt(n):t}const n=Gt(t);return n!==t?n:t}function Pt(t){return t.indexOf("\\")<0?t:t.replace(vt,"$1")}function At(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(_t,(function(t,e,n){return e||Kt(t,n)}))}const Ht=/[&<>"]/,qt=/[&<>"]/g,$t={"&":"&","<":"<",">":">",'"':"""};function te(t){return $t[t]}function ee(t){return Ht.test(t)?t.replace(qt,te):t}const ne=/[.?*+^$[\]\\(){}|-]/g;function le(t){return t.replace(ne,"\\$&")}function ie(t){switch(t){case 9:case 32:return!0}return!1}function ae(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function se(t){return st.test(t)||rt.test(t)}function re(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function oe(t){return t=t.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(t=t.replace(/ẞ/g,"ß")),t.toLowerCase().toUpperCase()}const ce={mdurl:l,ucmicro:i};function de(t,e,n){let l,i,a,s;const r=t.posMax,o=t.pos;t.pos=e+1,l=1;while(t.pos32))return a;if(41===l){if(0===s)break;s--}i++}}return e===i||0!==s||(a.str=At(t.slice(e,i)),a.pos=i,a.ok=!0),a}function he(t,e,n,l){let i,a=e;const s={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(l)s.str=l.str,s.marker=l.marker;else{if(a>=n)return s;let l=t.charCodeAt(a);if(34!==l&&39!==l&&40!==l)return s;e++,a++,40===l&&(l=41),s.marker=l}while(a"+ee(a.content)+""},me.code_block=function(t,e,n,l,i){const a=t[e];return""+ee(t[e].content)+"\n"},me.fence=function(t,e,n,l,i){const a=t[e],s=a.info?At(a.info).trim():"";let r,o="",c="";if(s){const t=s.split(/(\s+)/g);o=t[0],c=t.slice(2).join("")}if(r=n.highlight&&n.highlight(a.content,o,c)||ee(a.content),0===r.indexOf("${r}\n`}return`
${r}
\n`},me.image=function(t,e,n,l,i){const a=t[e];return a.attrs[a.attrIndex("alt")][1]=i.renderInlineAsText(a.children,n,l),i.renderToken(t,e,n)},me.hardbreak=function(t,e,n){return n.xhtmlOut?"
\n":"
\n"},me.softbreak=function(t,e,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},me.text=function(t,e){return ee(t[e].content)},me.html_block=function(t,e){return t[e].content},me.html_inline=function(t,e){return t[e].content},Ue.prototype.renderAttrs=function(t){let e,n,l;if(!t.attrs)return"";for(l="",e=0,n=t.attrs.length;e\n":">",i},Ue.prototype.renderInline=function(t,e,n){let l="";const i=this.rules;for(let a=0,s=t.length;a=0&&(n=this.attrs[e][1]),n},Ze.prototype.attrJoin=function(t,e){const n=this.attrIndex(t);n<0?this.attrPush([t,e]):this.attrs[n][1]=this.attrs[n][1]+" "+e};var Ne=Ze;function Re(t,e,n){this.src=t,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=e}Re.prototype.Token=Ne;var Se=Re;const We=/\r\n?|\n/g,Ve=/\0/g;function Qe(t){let e;e=t.src.replace(We,"\n"),e=e.replace(Ve,"�"),t.src=e}function ye(t){let e;t.inlineMode?(e=new t.Token("inline","",0),e.content=t.src,e.map=[0,1],e.children=[],t.tokens.push(e)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}function Te(t){const e=t.tokens;for(let n=0,l=e.length;n\s]/i.test(t)}function ge(t){return/^<\/a\s*>/i.test(t)}function Ee(t){const e=t.tokens;if(t.md.options.linkify)for(let n=0,l=e.length;n=0;a--){const s=l[a];if("link_close"!==s.type){if("html_inline"===s.type&&(Me(s.content)&&i>0&&i--,ge(s.content)&&i++),!(i>0)&&"text"===s.type&&t.md.linkify.test(s.content)){const i=s.content;let r=t.md.linkify.match(i);const o=[];let c=s.level,d=0;r.length>0&&0===r[0].index&&a>0&&"text_special"===l[a-1].type&&(r=r.slice(1));for(let e=0;ed){const e=new t.Token("text","",0);e.content=i.slice(d,s),e.level=c,o.push(e)}const u=new t.Token("link_open","a",1);u.attrs=[["href",l]],u.level=c++,u.markup="linkify",u.info="auto",o.push(u);const h=new t.Token("text","",0);h.content=a,h.level=c,o.push(h);const m=new t.Token("link_close","a",-1);m.level=--c,m.markup="linkify",m.info="auto",o.push(m),d=r[e].lastIndex}if(d=0;n--){const l=t[n];"text"!==l.type||e||(l.content=l.content.replace(Je,Ye)),"link_open"===l.type&&"auto"===l.info&&e--,"link_close"===l.type&&"auto"===l.info&&e++}}function Xe(t){let e=0;for(let n=t.length-1;n>=0;n--){const l=t[n];"text"!==l.type||e||Ge.test(l.content)&&(l.content=l.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1—").replace(/(^|\s)--(?=\s|$)/gm,"$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1–")),"link_open"===l.type&&"auto"===l.info&&e--,"link_close"===l.type&&"auto"===l.info&&e++}}function Ie(t){let e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(Be.test(t.tokens[e].content)&&Ce(t.tokens[e].children),Ge.test(t.tokens[e].content)&&Xe(t.tokens[e].children))}const De=/['"]/,fe=/['"]/g,Le="’";function we(t,e,n){return t.slice(0,e)+n+t.slice(e+1)}function xe(t,e){let n;const l=[];for(let i=0;i=0;n--)if(l[n].level<=s)break;if(l.length=n+1,"text"!==a.type)continue;let r=a.content,o=0,c=r.length;t:while(o=0)U=r.charCodeAt(d.index-1);else for(n=i-1;n>=0;n--){if("softbreak"===t[n].type||"hardbreak"===t[n].type)break;if(t[n].content){U=t[n].content.charCodeAt(t[n].content.length-1);break}}let p=32;if(o=48&&U<=57&&(h=u=!1),u&&h&&(u=F,h=b),u||h){if(h)for(n=l.length-1;n>=0;n--){let u=l[n];if(l[n].level=0;e--)"inline"===t.tokens[e].type&&De.test(t.tokens[e].content)&&xe(t.tokens[e].children,t)}function ve(t){let e,n;const l=t.tokens,i=l.length;for(let a=0;a0&&this.level++,this.tokens.push(l),l},Ke.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},Ke.prototype.skipEmptyLines=function(t){for(let e=this.lineMax;te)if(!ie(this.src.charCodeAt(--t)))return t+1;return t},Ke.prototype.skipChars=function(t,e){for(let n=this.src.length;tn)if(e!==this.src.charCodeAt(--t))return t+1;return t},Ke.prototype.getLines=function(t,e,n,l){if(t>=e)return"";const i=new Array(e-t);for(let a=0,s=t;sn?new Array(t-n+1).join(" ")+this.src.slice(c,o):this.src.slice(c,o)}return i.join("")},Ke.prototype.Token=Ne;var Pe=Ke;const Ae=65536;function He(t,e){const n=t.bMarks[e]+t.tShift[e],l=t.eMarks[e];return t.src.slice(n,l)}function qe(t){const e=[],n=t.length;let l=0,i=t.charCodeAt(l),a=!1,s=0,r="";while(ln)return!1;let i=e+1;if(t.sCount[i]=4)return!1;let a=t.bMarks[i]+t.tShift[i];if(a>=t.eMarks[i])return!1;const s=t.src.charCodeAt(a++);if(124!==s&&45!==s&&58!==s)return!1;if(a>=t.eMarks[i])return!1;const r=t.src.charCodeAt(a++);if(124!==r&&45!==r&&58!==r&&!ie(r))return!1;if(45===s&&ie(r))return!1;while(a=4)return!1;c=qe(o),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==d.length)return!1;if(l)return!0;const h=t.parentType;t.parentType="table";const m=t.md.block.ruler.getRules("blockquote"),U=t.push("table_open","table",1),p=[e,0];U.map=p;const F=t.push("thead_open","thead",1);F.map=[e,e+1];const b=t.push("tr_open","tr",1);b.map=[e,e+1];for(let R=0;R=4)break;if(c=qe(o),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),N+=u-c.length,N>Ae)break;if(i===e+2){const n=t.push("tbody_open","tbody",1);n.map=Z=[e+2,0]}const a=t.push("tr_open","tr",1);a.map=[i,i+1];for(let e=0;e=4))break;l++,i=l}t.line=i;const a=t.push("code_block","code",0);return a.content=t.getLines(e,i,4+t.blkIndent,!1)+"\n",a.map=[e,t.line],!0}function en(t,e,n,l){let i=t.bMarks[e]+t.tShift[e],a=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(i+3>a)return!1;const s=t.src.charCodeAt(i);if(126!==s&&96!==s)return!1;let r=i;i=t.skipChars(i,s);let o=i-r;if(o<3)return!1;const c=t.src.slice(r,i),d=t.src.slice(i,a);if(96===s&&d.indexOf(String.fromCharCode(s))>=0)return!1;if(l)return!0;let u=e,h=!1;for(;;){if(u++,u>=n)break;if(i=r=t.bMarks[u]+t.tShift[u],a=t.eMarks[u],i=4)&&(i=t.skipChars(i,s),!(i-r=4)return!1;if(62!==t.src.charCodeAt(i))return!1;if(l)return!0;const r=[],o=[],c=[],d=[],u=t.md.block.ruler.getRules("blockquote"),h=t.parentType;t.parentType="blockquote";let m,U=!1;for(m=e;m=a)break;if(62===t.src.charCodeAt(i++)&&!e){let e,n,l=t.sCount[m]+1;32===t.src.charCodeAt(i)?(i++,l++,n=!1,e=!0):9===t.src.charCodeAt(i)?(e=!0,(t.bsCount[m]+l)%4===3?(i++,l++,n=!1):n=!0):e=!1;let s=l;r.push(t.bMarks[m]),t.bMarks[m]=i;while(i=a,o.push(t.bsCount[m]),t.bsCount[m]=t.sCount[m]+1+(e?1:0),c.push(t.sCount[m]),t.sCount[m]=s-l,d.push(t.tShift[m]),t.tShift[m]=i-t.bMarks[m];continue}if(U)break;let l=!1;for(let i=0,a=u.length;i";const b=[e,0];F.map=b,t.md.block.tokenize(t,e,m);const Z=t.push("blockquote_close","blockquote",-1);Z.markup=">",t.lineMax=s,t.parentType=h,b[1]=t.line;for(let N=0;N=4)return!1;let a=t.bMarks[e]+t.tShift[e];const s=t.src.charCodeAt(a++);if(42!==s&&45!==s&&95!==s)return!1;let r=1;while(a=l)return-1;let a=t.src.charCodeAt(i++);if(a<48||a>57)return-1;for(;;){if(i>=l)return-1;if(a=t.src.charCodeAt(i++),!(a>=48&&a<=57)){if(41===a||46===a)break;return-1}if(i-n>=10)return-1}return i=4)return!1;if(t.listIndent>=0&&t.sCount[o]-t.listIndent>=4&&t.sCount[o]=t.blkIndent&&(m=!0),(h=sn(t,o))>=0){if(d=!0,s=t.bMarks[o]+t.tShift[o],u=Number(t.src.slice(s,h-1)),m&&1!==u)return!1}else{if(!((h=an(t,o))>=0))return!1;d=!1}if(m&&t.skipSpaces(h)>=t.eMarks[o])return!1;if(l)return!0;const U=t.src.charCodeAt(h-1),p=t.tokens.length;d?(r=t.push("ordered_list_open","ol",1),1!==u&&(r.attrs=[["start",u]])):r=t.push("bullet_list_open","ul",1);const F=[o,0];r.map=F,r.markup=String.fromCharCode(U);let b=!1;const Z=t.md.block.ruler.getRules("list"),N=t.parentType;t.parentType="list";while(o=i?1:l-e,m>4&&(m=1);const p=e+m;r=t.push("list_item_open","li",1),r.markup=String.fromCharCode(U);const F=[o,0];r.map=F,d&&(r.info=t.src.slice(s,h-1));const N=t.tight,R=t.tShift[o],S=t.sCount[o],W=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=p,t.tight=!0,t.tShift[o]=u-t.bMarks[o],t.sCount[o]=l,u>=i&&t.isEmpty(o+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,o,n,!0),t.tight&&!b||(c=!1),b=t.line-o>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=W,t.tShift[o]=R,t.sCount[o]=S,t.tight=N,r=t.push("list_item_close","li",-1),r.markup=String.fromCharCode(U),o=t.line,F[1]=o,o>=n)break;if(t.sCount[o]=4)break;let V=!1;for(let i=0,a=Z.length;i=4)return!1;if(91!==t.src.charCodeAt(i))return!1;function r(e){const n=t.lineMax;if(e>=n||t.isEmpty(e))return null;let l=!1;if(t.sCount[e]-t.blkIndent>3&&(l=!0),t.sCount[e]<0&&(l=!0),!l){const l=t.md.block.ruler.getRules("reference"),i=t.parentType;t.parentType="reference";let a=!1;for(let s=0,r=l.length;s`\\x00-\\x20]+",mn="'[^']*'",Un='"[^"]*"',pn="(?:"+hn+"|"+mn+"|"+Un+")",Fn="(?:\\s+"+un+"(?:\\s*=\\s*"+pn+")?)",bn="<[A-Za-z][A-Za-z0-9\\-]*"+Fn+"*\\s*\\/?>",Zn="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",Nn="\x3c!---?>|\x3c!--(?:[^-]|-[^-]|--[^>])*--\x3e",Rn="<[?][\\s\\S]*?[?]>",Sn="]*>",Wn="",Vn=new RegExp("^(?:"+bn+"|"+Zn+"|"+Nn+"|"+Rn+"|"+Sn+"|"+Wn+")"),Qn=new RegExp("^(?:"+bn+"|"+Zn+")"),yn=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(Qn.source+"\\s*$"),/^$/,!1]];function Tn(t,e,n,l){let i=t.bMarks[e]+t.tShift[e],a=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(i))return!1;let s=t.src.slice(i,a),r=0;for(;r=4)return!1;let s=t.src.charCodeAt(i);if(35!==s||i>=a)return!1;let r=1;s=t.src.charCodeAt(++i);while(35===s&&i6||ii&&ie(t.src.charCodeAt(o-1))&&(a=o),t.line=e+1;const c=t.push("heading_open","h"+String(r),1);c.markup="########".slice(0,r),c.map=[e,t.line];const d=t.push("inline","",0);d.content=t.src.slice(i,a).trim(),d.map=[e,t.line],d.children=[];const u=t.push("heading_close","h"+String(r),-1);return u.markup="########".slice(0,r),!0}function gn(t,e,n){const l=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const i=t.parentType;t.parentType="paragraph";let a,s=0,r=e+1;for(;r3)continue;if(t.sCount[r]>=t.blkIndent){let e=t.bMarks[r]+t.tShift[r];const n=t.eMarks[r];if(e=n))){s=61===a?1:2;break}}if(t.sCount[r]<0)continue;let e=!1;for(let i=0,a=l.length;i3)continue;if(t.sCount[a]<0)continue;let e=!1;for(let i=0,s=l.length;i=n)break;if(t.sCount[s]=a){t.line=n;break}const e=t.line;let o=!1;for(let a=0;a=t.line)throw new Error("block rule didn't increment state.line");break}if(!o)throw new Error("none of the block rules matched");t.tight=!r,t.isEmpty(t.line-1)&&(r=!0),s=t.line,s0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(l),this.tokens_meta.push(i),l},kn.prototype.scanDelims=function(t,e){const n=this.posMax,l=this.src.charCodeAt(t),i=t>0?this.src.charCodeAt(t-1):32;let a=t;while(a0)return!1;const n=t.pos,l=t.posMax;if(n+3>l)return!1;if(58!==t.src.charCodeAt(n))return!1;if(47!==t.src.charCodeAt(n+1))return!1;if(47!==t.src.charCodeAt(n+2))return!1;const i=t.pending.match(In);if(!i)return!1;const a=i[1],s=t.md.linkify.matchAtStart(t.src.slice(n-a.length));if(!s)return!1;let r=s.url;if(r.length<=a.length)return!1;r=r.replace(/\*+$/,"");const o=t.md.normalizeLink(r);if(!t.md.validateLink(o))return!1;if(!e){t.pending=t.pending.slice(0,-a.length);const e=t.push("link_open","a",1);e.attrs=[["href",o]],e.markup="linkify",e.info="auto";const n=t.push("text","",0);n.content=t.md.normalizeLinkText(r);const l=t.push("link_close","a",-1);l.markup="linkify",l.info="auto"}return t.pos+=r.length-a.length,!0}function fn(t,e){let n=t.pos;if(10!==t.src.charCodeAt(n))return!1;const l=t.pending.length-1,i=t.posMax;if(!e)if(l>=0&&32===t.pending.charCodeAt(l))if(l>=1&&32===t.pending.charCodeAt(l-1)){let e=l-1;while(e>=1&&32===t.pending.charCodeAt(e-1))e--;t.pending=t.pending.slice(0,e),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);n++;while(n=l)return!1;let i=t.src.charCodeAt(n);if(10===i){e||t.push("hardbreak","br",0),n++;while(n=55296&&i<=56319&&n+1=56320&&e<=57343&&(a+=t.src[n+1],n++)}const s="\\"+a;if(!e){const e=t.push("text_special","",0);i<256&&0!==Ln[i]?e.content=a:e.content=s,e.markup=s,e.info="escape"}return t.pos=n+1,!0}function xn(t,e){let n=t.pos;const l=t.src.charCodeAt(n);if(96!==l)return!1;const i=n;n++;const a=t.posMax;while(n?@[]^_`{|}~-".split("").forEach((function(t){Ln[t.charCodeAt(0)]=1}));var _n={tokenize:zn,postProcess:On};function jn(t,e){const n=t.pos,l=t.src.charCodeAt(n);if(e)return!1;if(95!==l&&42!==l)return!1;const i=t.scanDelims(t.pos,42===l);for(let a=0;a=0;l--){const n=e[l];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const i=e[n.end],a=l>0&&e[l-1].end===n.end+1&&e[l-1].marker===n.marker&&e[l-1].token===n.token-1&&e[n.end+1].token===i.token+1,s=String.fromCharCode(n.marker),r=t.tokens[n.token];r.type=a?"strong_open":"em_open",r.tag=a?"strong":"em",r.nesting=1,r.markup=a?s+s:s,r.content="";const o=t.tokens[i.token];o.type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?s+s:s,o.content="",a&&(t.tokens[e[l-1].token].content="",t.tokens[e[n.end+1].token].content="",l--)}}function Pn(t){const e=t.tokens_meta,n=t.tokens_meta.length;Kn(t,t.delimiters);for(let l=0;l=u)return!1;if(o=U,i=t.md.helpers.parseLinkDestination(t.src,U,t.posMax),i.ok){for(s=t.md.normalizeLink(i.str),t.md.validateLink(s)?U=i.pos:s="",o=U;U=u||41!==t.src.charCodeAt(U))&&(c=!0),U++}if(c){if("undefined"===typeof t.env.references)return!1;if(U=0?l=t.src.slice(o,U++):U=m+1):U=m+1,l||(l=t.src.slice(h,m)),a=t.env.references[oe(l)],!a)return t.pos=d,!1;s=a.href,r=a.title}if(!e){t.pos=h,t.posMax=m;const e=t.push("link_open","a",1),n=[["href",s]];e.attrs=n,r&&n.push(["title",r]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=U,t.posMax=u,!0}function qn(t,e){let n,l,i,a,s,r,o,c,d="";const u=t.pos,h=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;const m=t.pos+2,U=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(U<0)return!1;if(a=U+1,a=h)return!1;for(c=a,r=t.md.helpers.parseLinkDestination(t.src,a,t.posMax),r.ok&&(d=t.md.normalizeLink(r.str),t.md.validateLink(d)?a=r.pos:d=""),c=a;a=h||41!==t.src.charCodeAt(a))return t.pos=u,!1;a++}else{if("undefined"===typeof t.env.references)return!1;if(a=0?i=t.src.slice(c,a++):a=U+1):a=U+1,i||(i=t.src.slice(m,U)),s=t.env.references[oe(i)],!s)return t.pos=u,!1;d=s.href,o=s.title}if(!e){l=t.src.slice(m,U);const e=[];t.md.inline.parse(l,t.md,t.env,e);const n=t.push("image","img",0),i=[["src",d],["alt",""]];n.attrs=i,n.children=e,n.content=l,o&&i.push(["title",o])}return t.pos=a,t.posMax=h,!0}const $n=/^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,tl=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;function el(t,e){let n=t.pos;if(60!==t.src.charCodeAt(n))return!1;const l=t.pos,i=t.posMax;for(;;){if(++n>=i)return!1;const e=t.src.charCodeAt(n);if(60===e)return!1;if(62===e)break}const a=t.src.slice(l+1,n);if(tl.test(a)){const n=t.md.normalizeLink(a);if(!t.md.validateLink(n))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",n]],e.markup="autolink",e.info="auto";const l=t.push("text","",0);l.content=t.md.normalizeLinkText(a);const i=t.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return t.pos+=a.length+2,!0}if($n.test(a)){const n=t.md.normalizeLink("mailto:"+a);if(!t.md.validateLink(n))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",n]],e.markup="autolink",e.info="auto";const l=t.push("text","",0);l.content=t.md.normalizeLinkText(a);const i=t.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return t.pos+=a.length+2,!0}return!1}function nl(t){return/^\s]/i.test(t)}function ll(t){return/^<\/a\s*>/i.test(t)}function il(t){const e=32|t;return e>=97&&e<=122}function al(t,e){if(!t.md.options.html)return!1;const n=t.posMax,l=t.pos;if(60!==t.src.charCodeAt(l)||l+2>=n)return!1;const i=t.src.charCodeAt(l+1);if(33!==i&&63!==i&&47!==i&&!il(i))return!1;const a=t.src.slice(l).match(Vn);if(!a)return!1;if(!e){const e=t.push("html_inline","",0);e.content=a[0],nl(e.content)&&t.linkLevel++,ll(e.content)&&t.linkLevel--}return t.pos+=a[0].length,!0}const sl=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,rl=/^&([a-z][a-z0-9]{1,31});/i;function ol(t,e){const n=t.pos,l=t.posMax;if(38!==t.src.charCodeAt(n))return!1;if(n+1>=l)return!1;const i=t.src.charCodeAt(n+1);if(35===i){const l=t.src.slice(n).match(sl);if(l){if(!e){const e="x"===l[1][0].toLowerCase()?parseInt(l[1].slice(1),16):parseInt(l[1],10),n=t.push("text_special","",0);n.content=xt(e)?zt(e):zt(65533),n.markup=l[0],n.info="entity"}return t.pos+=l[0].length,!0}}else{const l=t.src.slice(n).match(rl);if(l){const n=Gt(l[0]);if(n!==l[0]){if(!e){const e=t.push("text_special","",0);e.content=n,e.markup=l[0],e.info="entity"}return t.pos+=l[0].length,!0}}}return!1}function cl(t){const e={},n=t.length;if(!n)return;let l=0,i=-2;const a=[];for(let s=0;sr;o-=a[o]+1){const e=t[o];if(e.marker===n.marker&&(e.open&&e.end<0)){let l=!1;if((e.close||n.open)&&(e.length+n.length)%3===0&&(e.length%3===0&&n.length%3===0||(l=!0)),!l){const l=o>0&&!t[o-1].open?a[o-1]+1:0;a[s]=s-o+l,a[o]=l,n.open=!1,e.end=s,e.close=!1,c=-1,i=-2;break}}}-1!==c&&(e[n.marker][(n.open?3:0)+(n.length||0)%3]=c)}}function dl(t){const e=t.tokens_meta,n=t.tokens_meta.length;cl(t.delimiters);for(let l=0;l0&&l++,"text"===i[e].type&&e+1=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;s||t.pos++,a[e]=t.pos},Ul.prototype.tokenize=function(t){const e=this.ruler.getRules(""),n=e.length,l=t.posMax,i=t.md.options.maxNesting;while(t.pos=t.pos)throw new Error("inline rule didn't increment state.pos");break}if(s){if(t.pos>=l)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},Ul.prototype.parse=function(t,e,n,l){const i=new this.State(t,e,n,l);this.tokenize(i);const a=this.ruler2.getRules(""),s=a.length;for(let r=0;r|$))",e.tpl_email_fuzzy="(^|"+n+'|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+e.src_ZPCc+"))((?![$+<=>^`||])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}function bl(t){const e=Array.prototype.slice.call(arguments,1);return e.forEach((function(e){e&&Object.keys(e).forEach((function(n){t[n]=e[n]}))})),t}function Zl(t){return Object.prototype.toString.call(t)}function Nl(t){return"[object String]"===Zl(t)}function Rl(t){return"[object Object]"===Zl(t)}function Sl(t){return"[object RegExp]"===Zl(t)}function Wl(t){return"[object Function]"===Zl(t)}function Vl(t){return t.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}const Ql={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function yl(t){return Object.keys(t||{}).reduce((function(t,e){return t||Ql.hasOwnProperty(e)}),!1)}const Tl={"http:":{validate:function(t,e,n){const l=t.slice(e);return n.re.http||(n.re.http=new RegExp("^\\/\\/"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,"i")),n.re.http.test(l)?l.match(n.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(t,e,n){const l=t.slice(e);return n.re.no_http||(n.re.no_http=new RegExp("^"+n.re.src_auth+"(?:localhost|(?:(?:"+n.re.src_domain+")\\.)+"+n.re.src_domain_root+")"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,"i")),n.re.no_http.test(l)?e>=3&&":"===t[e-3]||e>=3&&"/"===t[e-3]?0:l.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,n){const l=t.slice(e);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(l)?l.match(n.re.mailto)[0].length:0}}},Ml="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",gl="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function El(t){t.__index__=-1,t.__text_cache__=""}function Gl(t){return function(e,n){const l=e.slice(n);return t.test(l)?l.match(t)[0].length:0}}function Bl(){return function(t,e){e.normalize(t)}}function Jl(t){const e=t.re=Fl(t.__opts__),n=t.__tlds__.slice();function l(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||n.push(Ml),n.push(e.src_xn),e.src_tlds=n.join("|"),e.email_fuzzy=RegExp(l(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(l(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(l(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(l(e.tpl_host_fuzzy_test),"i");const i=[];function a(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach((function(e){const n=t.__schemas__[e];if(null===n)return;const l={validate:null,link:null};if(t.__compiled__[e]=l,Rl(n))return Sl(n.validate)?l.validate=Gl(n.validate):Wl(n.validate)?l.validate=n.validate:a(e,n),void(Wl(n.normalize)?l.normalize=n.normalize:n.normalize?a(e,n):l.normalize=Bl());Nl(n)?i.push(e):a(e,n)})),i.forEach((function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)})),t.__compiled__[""]={validate:null,normalize:Bl()};const s=Object.keys(t.__compiled__).filter((function(e){return e.length>0&&t.__compiled__[e]})).map(Vl).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+s+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+e.src_ZPCc+"))("+s+")","ig"),t.re.schema_at_start=RegExp("^"+t.re.schema_search.source,"i"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),El(t)}function kl(t,e){const n=t.__index__,l=t.__last_index__,i=t.__text_cache__.slice(n,l);this.schema=t.__schema__.toLowerCase(),this.index=n+e,this.lastIndex=l+e,this.raw=i,this.text=i,this.url=i}function Yl(t,e){const n=new kl(t,e);return t.__compiled__[n.schema].normalize(n,t),n}function Cl(t,e){if(!(this instanceof Cl))return new Cl(t,e);e||yl(t)&&(e=t,t={}),this.__opts__=bl({},Ql,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=bl({},Tl,t),this.__compiled__={},this.__tlds__=gl,this.__tlds_replaced__=!1,this.re={},Jl(this)}Cl.prototype.add=function(t,e){return this.__schemas__[t]=e,Jl(this),this},Cl.prototype.set=function(t){return this.__opts__=bl(this.__opts__,t),this},Cl.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;let e,n,l,i,a,s,r,o,c;if(this.re.schema_test.test(t)){r=this.re.schema_search,r.lastIndex=0;while(null!==(e=r.exec(t)))if(i=this.testSchemaAt(t,e[2],r.lastIndex),i){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+i;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(o=t.search(this.re.host_fuzzy_test),o>=0&&(this.__index__<0||o=0&&null!==(l=t.match(this.re.email_fuzzy))&&(a=l.index+l[1].length,s=l.index+l[0].length,(this.__index__<0||athis.__last_index__)&&(this.__schema__="mailto:",this.__index__=a,this.__last_index__=s))),this.__index__>=0},Cl.prototype.pretest=function(t){return this.re.pretest.test(t)},Cl.prototype.testSchemaAt=function(t,e,n){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,n,this):0},Cl.prototype.match=function(t){const e=[];let n=0;this.__index__>=0&&this.__text_cache__===t&&(e.push(Yl(this,n)),n=this.__last_index__);let l=n?t.slice(n):t;while(this.test(l))e.push(Yl(this,n)),l=l.slice(this.__last_index__),n+=this.__last_index__;return e.length?e:null},Cl.prototype.matchAtStart=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return null;const e=this.re.schema_at_start.exec(t);if(!e)return null;const n=this.testSchemaAt(t,e[2],e[0].length);return n?(this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+n,Yl(this,0)):null},Cl.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter((function(t,e,n){return t!==n[e-1]})).reverse(),Jl(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,Jl(this),this)},Cl.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},Cl.prototype.onCompile=function(){};var Xl=Cl;const Il=2147483647,Dl=36,fl=1,Ll=26,wl=38,xl=700,zl=72,vl=128,Ol="-",_l=/^xn--/,jl=/[^\0-\x7F]/,Kl=/[\x2E\u3002\uFF0E\uFF61]/g,Pl={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Al=Dl-fl,Hl=Math.floor,ql=String.fromCharCode;function $l(t){throw new RangeError(Pl[t])}function ti(t,e){const n=[];let l=t.length;while(l--)n[l]=e(t[l]);return n}function ei(t,e){const n=t.split("@");let l="";n.length>1&&(l=n[0]+"@",t=n[1]),t=t.replace(Kl,".");const i=t.split("."),a=ti(i,e).join(".");return l+a}function ni(t){const e=[];let n=0;const l=t.length;while(n=55296&&i<=56319&&nString.fromCodePoint(...t),ii=function(t){return t>=48&&t<58?t-48+26:t>=65&&t<91?t-65:t>=97&&t<123?t-97:Dl},ai=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},si=function(t,e,n){let l=0;for(t=n?Hl(t/xl):t>>1,t+=Hl(t/e);t>Al*Ll>>1;l+=Dl)t=Hl(t/Al);return Hl(l+(Al+1)*t/(t+wl))},ri=function(t){const e=[],n=t.length;let l=0,i=vl,a=zl,s=t.lastIndexOf(Ol);s<0&&(s=0);for(let r=0;r=128&&$l("not-basic"),e.push(t.charCodeAt(r));for(let r=s>0?s+1:0;r=n&&$l("invalid-input");const s=ii(t.charCodeAt(r++));s>=Dl&&$l("invalid-input"),s>Hl((Il-l)/e)&&$l("overflow"),l+=s*e;const o=i<=a?fl:i>=a+Ll?Ll:i-a;if(sHl(Il/c)&&$l("overflow"),e*=c}const o=e.length+1;a=si(l-s,o,0==s),Hl(l/o)>Il-i&&$l("overflow"),i+=Hl(l/o),l%=o,e.splice(l++,0,i)}return String.fromCodePoint(...e)},oi=function(t){const e=[];t=ni(t);const n=t.length;let l=vl,i=0,a=zl;for(const o of t)o<128&&e.push(ql(o));const s=e.length;let r=s;s&&e.push(Ol);while(r=l&&eHl((Il-i)/o)&&$l("overflow"),i+=(n-l)*o,l=n;for(const c of t)if(cIl&&$l("overflow"),c===l){let t=i;for(let n=Dl;;n+=Dl){const l=n<=a?fl:n>=a+Ll?Ll:n-a;if(t=0))try{e.hostname=hi.toASCII(e.hostname)}catch(n){}return w(x(e))}function Wi(t){const e=at(t,!0);if(e.hostname&&(!e.protocol||Ri.indexOf(e.protocol)>=0))try{e.hostname=hi.toUnicode(e.hostname)}catch(n){}return I(x(e),I.defaultChars+"%")}function Vi(t,e){if(!(this instanceof Vi))return new Vi(t,e);e||It(t)||(e=t||{},t="default"),this.inline=new pl,this.block=new Jn,this.core=new je,this.renderer=new pe,this.linkify=new Xl,this.validateLink=Ni,this.normalizeLink=Si,this.normalizeLinkText=Wi,this.utils=a,this.helpers=Lt({},s),this.options={},this.configure(t),e&&this.set(e)}Vi.prototype.set=function(t){return Lt(this.options,t),this},Vi.prototype.configure=function(t){const e=this;if(It(t)){const e=t;if(t=Fi[e],!t)throw new Error('Wrong `markdown-it` preset "'+e+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach((function(n){t.components[n].rules&&e[n].ruler.enableOnly(t.components[n].rules),t.components[n].rules2&&e[n].ruler2.enableOnly(t.components[n].rules2)})),this},Vi.prototype.enable=function(t,e){let n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.enable(t,!0))}),this),n=n.concat(this.inline.ruler2.enable(t,!0));const l=t.filter((function(t){return n.indexOf(t)<0}));if(l.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+l);return this},Vi.prototype.disable=function(t,e){let n=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){n=n.concat(this[e].ruler.disable(t,!0))}),this),n=n.concat(this.inline.ruler2.disable(t,!0));const l=t.filter((function(t){return n.indexOf(t)<0}));if(l.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+l);return this},Vi.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},Vi.prototype.parse=function(t,e){if("string"!==typeof t)throw new Error("Input data should be a String");const n=new this.core.State(t,this,e);return this.core.process(n),n.tokens},Vi.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},Vi.prototype.parseInline=function(t,e){const n=new this.core.State(t,this,e);return n.inlineMode=!0,this.core.process(n),n.tokens},Vi.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)};var Qi=Vi,yi=n(1995),Ti=n.n(yi),Mi=n(5130);const gi={class:"attachment-info"},Ei={class:"attachment-type"},Gi={key:0,class:"icon"},Bi={key:1,class:"icon"},Ji={key:2,class:"icon"},ki={key:3,class:"icon"},Yi={key:4,class:"icon"},Ci={class:"attachment-details"},Xi={class:"attachment-name"},Ii={class:"attachment-meta"},Di={class:"coin-tag"},fi={class:"attachment-actions"},Li=["download"],wi={key:0,class:"pdf-preview-modal"},xi={class:"pdf-preview-header"},zi={class:"pdf-preview-container"},vi={key:0,class:"pdf-viewer"},Oi={key:1,class:"preview-error"};function _i(t,e,n,l,i,a){const s=(0,r.g2)("vue-pdf-embed");return(0,r.uX)(),(0,r.CE)("div",{class:(0,o.C4)(["attachment-card",{locked:a.isLocked,premium:a.hasCoin}])},[(0,r.Lk)("div",gi,[(0,r.Lk)("div",Ei,["pdf"===n.type?((0,r.uX)(),(0,r.CE)("span",Gi," 📄 ")):"doc"===n.type||"docx"===n.type?((0,r.uX)(),(0,r.CE)("span",Bi," 📝 ")):"xls"===n.type||"xlsx"===n.type?((0,r.uX)(),(0,r.CE)("span",Ji," 📊 ")):"zip"===n.type||"rar"===n.type||"7z"===n.type?((0,r.uX)(),(0,r.CE)("span",ki," 📦 ")):((0,r.uX)(),(0,r.CE)("span",Yi," 📄 "))]),(0,r.Lk)("div",Ci,[(0,r.Lk)("div",Xi,(0,o.v_)(a.displayFilename),1),(0,r.Lk)("div",Ii,[(0,r.eW)((0,o.v_)(n.type.toUpperCase())+" · "+(0,o.v_)(n.size)+" MB ",1),a.hasCoin?((0,r.uX)(),(0,r.CE)(r.FK,{key:0},[e[3]||(e[3]=(0,r.eW)("· ")),(0,r.Lk)("span",Di,(0,o.v_)(n.coin)+" 东币",1)],64)):a.isLocked?((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[e[4]||(e[4]=(0,r.eW)(" · ")),e[5]||(e[5]=(0,r.Lk)("span",{class:"lock-tag"},"🔒 加密",-1))],64)):((0,r.uX)(),(0,r.CE)(r.FK,{key:2},[(0,r.eW)("· 免费")],64))])])]),(0,r.Lk)("div",fi,[a.showPreview?((0,r.uX)(),(0,r.CE)("button",{key:0,onClick:e[0]||(e[0]=(...t)=>a.openPreview&&a.openPreview(...t)),class:"preview-button"},"预览")):(0,r.Q3)("",!0),(0,r.Lk)("a",{href:"javascript:void(0)",download:a.displayFilename,class:(0,o.C4)(["download-button",{disabled:a.isLocked&&!i.token}]),onClick:e[1]||(e[1]=(0,Mi.D$)(((...t)=>a.handleDownload&&a.handleDownload(...t)),["prevent"]))}," 下载 ",10,Li)]),i.isPdfPreviewOpen?((0,r.uX)(),(0,r.CE)("div",wi,[(0,r.Lk)("div",xi,[(0,r.Lk)("h3",null,(0,o.v_)(a.displayFilename),1),(0,r.Lk)("button",{onClick:e[2]||(e[2]=(...t)=>a.closePdfPreview&&a.closePdfPreview(...t)),class:"close-button"},"✕")]),(0,r.Lk)("div",zi,[i.pdfSrc?((0,r.uX)(),(0,r.CE)("div",vi,[(0,r.bF)(s,{source:i.pdfSrc,width:i.pdfWidth,height:i.pdfHeight},null,8,["source","width","height"])])):((0,r.uX)(),(0,r.CE)("div",Oi,"无法预览此文件"))])])):(0,r.Q3)("",!0)],2)}n(9314),n(1148),n(531),n(3579),n(1689),n(7642),n(8004),n(3853),n(5876),n(2475),n(5024),n(1698),n(4979),n(1678);var ji=n(144),Ki=Object.defineProperty,Pi=t=>{throw TypeError(t)},Ai=(t,e,n)=>e in t?Ki(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Hi=(t,e,n)=>Ai(t,"symbol"!=typeof e?e+"":e,n),qi=(t,e,n)=>e.has(t)||Pi("Cannot "+n),$i=(t,e,n)=>(qi(t,e,"read from private field"),n?n.call(t):e.get(t)),ta=(t,e,n)=>e.has(t)?Pi("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),ea=(t,e,n,l)=>(qi(t,e,"write to private field"),l?l.call(t,n):e.set(t,n),n),na=(t,e,n)=>(qi(t,e,"access private method"),n),la=(t,e,n,l)=>({set _(l){ea(t,e,l,n)},get _(){return $i(t,e,l)}}),ia={9306:(t,e,n)=>{var l=n(4901),i=n(6823),a=TypeError;t.exports=function(t){if(l(t))return t;throw new a(i(t)+" is not a function")}},3506:(t,e,n)=>{var l=n(3925),i=String,a=TypeError;t.exports=function(t){if(l(t))return t;throw new a("Can't set "+i(t)+" as a prototype")}},7080:(t,e,n)=>{var l=n(4402).has;t.exports=function(t){return l(t),t}},679:(t,e,n)=>{var l=n(1625),i=TypeError;t.exports=function(t,e){if(l(e,t))return t;throw new i("Incorrect invocation")}},8551:(t,e,n)=>{var l=n(34),i=String,a=TypeError;t.exports=function(t){if(l(t))return t;throw new a(i(t)+" is not an object")}},7811:t=>{t.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(t,e,n)=>{var l=n(4576),i=n(6706),a=n(2195),s=l.ArrayBuffer,r=l.TypeError;t.exports=s&&i(s.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!==a(t))throw new r("ArrayBuffer expected");return t.byteLength}},3238:(t,e,n)=>{var l=n(4576),i=n(7476),a=n(7394),s=l.ArrayBuffer,r=s&&s.prototype,o=r&&i(r.slice);t.exports=function(t){if(0!==a(t)||!o)return!1;try{return o(t,0,0),!1}catch{return!0}}},5169:(t,e,n)=>{var l=n(3238),i=TypeError;t.exports=function(t){if(l(t))throw new i("ArrayBuffer is detached");return t}},5636:(t,e,n)=>{var l=n(4576),i=n(9504),a=n(6706),s=n(7696),r=n(5169),o=n(7394),c=n(4483),d=n(1548),u=l.structuredClone,h=l.ArrayBuffer,m=l.DataView,U=Math.min,p=h.prototype,F=m.prototype,b=i(p.slice),Z=a(p,"resizable","get"),N=a(p,"maxByteLength","get"),R=i(F.getInt8),S=i(F.setInt8);t.exports=(d||c)&&function(t,e,n){var l,i=o(t),a=void 0===e?i:s(e),p=!Z||!Z(t);if(r(t),d&&(t=u(t,{transfer:[t]}),i===a&&(n||p)))return t;if(i>=a&&(!n||p))l=b(t,0,a);else{var F=n&&!p&&N?{maxByteLength:N(t)}:void 0;l=new h(a,F);for(var W=new m(t),V=new m(l),Q=U(a,i),y=0;y{var l,i,a,s=n(7811),r=n(3724),o=n(4576),c=n(4901),d=n(34),u=n(9297),h=n(6955),m=n(6823),U=n(6699),p=n(6840),F=n(2106),b=n(1625),Z=n(2787),N=n(2967),R=n(8227),S=n(3392),W=n(1181),V=W.enforce,Q=W.get,y=o.Int8Array,T=y&&y.prototype,M=o.Uint8ClampedArray,g=M&&M.prototype,E=y&&Z(y),G=T&&Z(T),B=Object.prototype,J=o.TypeError,k=R("toStringTag"),Y=S("TYPED_ARRAY_TAG"),C="TypedArrayConstructor",X=s&&!!N&&"Opera"!==h(o.opera),I=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},f={BigInt64Array:8,BigUint64Array:8},L=function(t){if(!d(t))return!1;var e=h(t);return"DataView"===e||u(D,e)||u(f,e)},w=function(t){var e=Z(t);if(d(e)){var n=Q(e);return n&&u(n,C)?n[C]:w(e)}},x=function(t){if(!d(t))return!1;var e=h(t);return u(D,e)||u(f,e)},z=function(t){if(x(t))return t;throw new J("Target is not a typed array")},v=function(t){if(c(t)&&(!N||b(E,t)))return t;throw new J(m(t)+" is not a typed array constructor")},O=function(t,e,n,l){if(r){if(n)for(var i in D){var a=o[i];if(a&&u(a.prototype,t))try{delete a.prototype[t]}catch{try{a.prototype[t]=e}catch{}}}(!G[t]||n)&&p(G,t,n?e:X&&T[t]||e,l)}},_=function(t,e,n){var l,i;if(r){if(N){if(n)for(l in D)if(i=o[l],i&&u(i,t))try{delete i[t]}catch{}if(E[t]&&!n)return;try{return p(E,t,n?e:X&&E[t]||e)}catch{}}for(l in D)i=o[l],i&&(!i[t]||n)&&p(i,t,e)}};for(l in D)i=o[l],a=i&&i.prototype,a?V(a)[C]=i:X=!1;for(l in f)i=o[l],a=i&&i.prototype,a&&(V(a)[C]=i);if((!X||!c(E)||E===Function.prototype)&&(E=function(){throw new J("Incorrect invocation")},X))for(l in D)o[l]&&N(o[l],E);if((!X||!G||G===B)&&(G=E.prototype,X))for(l in D)o[l]&&N(o[l].prototype,G);if(X&&Z(g)!==G&&N(g,G),r&&!u(G,k))for(l in I=!0,F(G,k,{configurable:!0,get:function(){return d(this)?this[Y]:void 0}}),D)o[l]&&U(o[l],Y,l);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:X,TYPED_ARRAY_TAG:I&&Y,aTypedArray:z,aTypedArrayConstructor:v,exportTypedArrayMethod:O,exportTypedArrayStaticMethod:_,getTypedArrayConstructor:w,isView:L,isTypedArray:x,TypedArray:E,TypedArrayPrototype:G}},5370:(t,e,n)=>{var l=n(6198);t.exports=function(t,e,n){for(var i=0,a=arguments.length>2?n:l(e),s=new t(a);a>i;)s[i]=e[i++];return s}},9617:(t,e,n)=>{var l=n(5397),i=n(5610),a=n(6198),s=function(t){return function(e,n,s){var r=l(e),o=a(r);if(0===o)return!t&&-1;var c,d=i(s,o);if(t&&n!==n){for(;o>d;)if(c=r[d++],c!==c)return!0}else for(;o>d;d++)if((t||d in r)&&r[d]===n)return t||d||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},4527:(t,e,n)=>{var l=n(3724),i=n(4376),a=TypeError,s=Object.getOwnPropertyDescriptor,r=l&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=r?function(t,e){if(i(t)&&!s(t,"length").writable)throw new a("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},7680:(t,e,n)=>{var l=n(9504);t.exports=l([].slice)},7628:(t,e,n)=>{var l=n(6198);t.exports=function(t,e){for(var n=l(t),i=new e(n),a=0;a{var l=n(6198),i=n(1291),a=RangeError;t.exports=function(t,e,n,s){var r=l(t),o=i(n),c=o<0?r+o:o;if(c>=r||c<0)throw new a("Incorrect index");for(var d=new e(r),u=0;u{var l=n(8551),i=n(9539);t.exports=function(t,e,n,a){try{return a?e(l(n)[0],n[1]):e(n)}catch(s){i(t,"throw",s)}}},2195:(t,e,n)=>{var l=n(9504),i=l({}.toString),a=l("".slice);t.exports=function(t){return a(i(t),8,-1)}},6955:(t,e,n)=>{var l=n(2140),i=n(4901),a=n(2195),s=n(8227),r=s("toStringTag"),o=Object,c="Arguments"===a(function(){return arguments}()),d=function(t,e){try{return t[e]}catch{}};t.exports=l?a:function(t){var e,n,l;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=d(e=o(t),r))?n:c?a(e):"Object"===(l=a(e))&&i(e.callee)?"Arguments":l}},7740:(t,e,n)=>{var l=n(9297),i=n(5031),a=n(7347),s=n(4913);t.exports=function(t,e,n){for(var r=i(e),o=s.f,c=a.f,d=0;d{var l=n(9039);t.exports=!l((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},2529:t=>{t.exports=function(t,e){return{value:t,done:e}}},6699:(t,e,n)=>{var l=n(3724),i=n(4913),a=n(6980);t.exports=l?function(t,e,n){return i.f(t,e,a(1,n))}:function(t,e,n){return t[e]=n,t}},6980:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},4659:(t,e,n)=>{var l=n(3724),i=n(4913),a=n(6980);t.exports=function(t,e,n){l?i.f(t,e,a(0,n)):t[e]=n}},2106:(t,e,n)=>{var l=n(283),i=n(4913);t.exports=function(t,e,n){return n.get&&l(n.get,e,{getter:!0}),n.set&&l(n.set,e,{setter:!0}),i.f(t,e,n)}},6840:(t,e,n)=>{var l=n(4901),i=n(4913),a=n(283),s=n(9433);t.exports=function(t,e,n,r){r||(r={});var o=r.enumerable,c=void 0!==r.name?r.name:e;if(l(n)&&a(n,c,r),r.global)o?t[e]=n:s(e,n);else{try{r.unsafe?t[e]&&(o=!0):delete t[e]}catch{}o?t[e]=n:i.f(t,e,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return t}},6279:(t,e,n)=>{var l=n(6840);t.exports=function(t,e,n){for(var i in e)l(t,i,e[i],n);return t}},9433:(t,e,n)=>{var l=n(4576),i=Object.defineProperty;t.exports=function(t,e){try{i(l,t,{value:e,configurable:!0,writable:!0})}catch{l[t]=e}return e}},3724:(t,e,n)=>{var l=n(9039);t.exports=!l((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4483:(t,e,n)=>{var l,i,a,s,r=n(4576),o=n(9429),c=n(1548),d=r.structuredClone,u=r.ArrayBuffer,h=r.MessageChannel,m=!1;if(c)m=function(t){d(t,{transfer:[t]})};else if(u)try{h||(l=o("worker_threads"),l&&(h=l.MessageChannel)),h&&(i=new h,a=new u(2),s=function(t){i.port1.postMessage(null,[t])},2===a.byteLength&&(s(a),0===a.byteLength&&(m=s)))}catch{}t.exports=m},4055:(t,e,n)=>{var l=n(4576),i=n(34),a=l.document,s=i(a)&&i(a.createElement);t.exports=function(t){return s?a.createElement(t):{}}},6837:t=>{var e=TypeError,n=9007199254740991;t.exports=function(t){if(t>n)throw e("Maximum allowed index exceeded");return t}},5002:t=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8727:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(t,e,n)=>{var l=n(4215);t.exports="NODE"===l},2839:(t,e,n)=>{var l=n(4576),i=l.navigator,a=i&&i.userAgent;t.exports=a?String(a):""},9519:(t,e,n)=>{var l,i,a=n(4576),s=n(2839),r=a.process,o=a.Deno,c=r&&r.versions||o&&o.version,d=c&&c.v8;d&&(l=d.split("."),i=l[0]>0&&l[0]<4?1:+(l[0]+l[1])),!i&&s&&(l=s.match(/Edge\/(\d+)/),(!l||l[1]>=74)&&(l=s.match(/Chrome\/(\d+)/),l&&(i=+l[1]))),t.exports=i},4215:(t,e,n)=>{var l=n(4576),i=n(2839),a=n(2195),s=function(t){return i.slice(0,t.length)===t};t.exports=function(){return s("Bun/")?"BUN":s("Cloudflare-Workers")?"CLOUDFLARE":s("Deno/")?"DENO":s("Node.js/")?"NODE":l.Bun&&"string"==typeof Bun.version?"BUN":l.Deno&&"object"==typeof Deno.version?"DENO":"process"===a(l.process)?"NODE":l.window&&l.document?"BROWSER":"REST"}()},8574:(t,e,n)=>{var l=n(9504),i=Error,a=l("".replace),s=function(t){return String(new i(t).stack)}("zxcasd"),r=/\n\s*at [^:]*:[^\n]*/,o=r.test(s);t.exports=function(t,e){if(o&&"string"==typeof t&&!i.prepareStackTrace)for(;e--;)t=a(t,r,"");return t}},6518:(t,e,n)=>{var l=n(4576),i=n(7347).f,a=n(6699),s=n(6840),r=n(9433),o=n(7740),c=n(2796);t.exports=function(t,e){var n,d,u,h,m,U,p=t.target,F=t.global,b=t.stat;if(d=F?l:b?l[p]||r(p,{}):l[p]&&l[p].prototype,d)for(u in e){if(m=e[u],t.dontCallGetSet?(U=i(d,u),h=U&&U.value):h=d[u],n=c(F?u:p+(b?".":"#")+u,t.forced),!n&&void 0!==h){if(typeof m==typeof h)continue;o(m,h)}(t.sham||h&&h.sham)&&a(m,"sham",!0),s(d,u,m,t)}}},9039:t=>{t.exports=function(t){try{return!!t()}catch{return!0}}},8745:(t,e,n)=>{var l=n(616),i=Function.prototype,a=i.apply,s=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(l?s.bind(a):function(){return s.apply(a,arguments)})},6080:(t,e,n)=>{var l=n(7476),i=n(9306),a=n(616),s=l(l.bind);t.exports=function(t,e){return i(t),void 0===e?t:a?s(t,e):function(){return t.apply(e,arguments)}}},616:(t,e,n)=>{var l=n(9039);t.exports=!l((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:(t,e,n)=>{var l=n(616),i=Function.prototype.call;t.exports=l?i.bind(i):function(){return i.apply(i,arguments)}},350:(t,e,n)=>{var l=n(3724),i=n(9297),a=Function.prototype,s=l&&Object.getOwnPropertyDescriptor,r=i(a,"name"),o=r&&"something"===function(){}.name,c=r&&(!l||l&&s(a,"name").configurable);t.exports={EXISTS:r,PROPER:o,CONFIGURABLE:c}},6706:(t,e,n)=>{var l=n(9504),i=n(9306);t.exports=function(t,e,n){try{return l(i(Object.getOwnPropertyDescriptor(t,e)[n]))}catch{}}},7476:(t,e,n)=>{var l=n(2195),i=n(9504);t.exports=function(t){if("Function"===l(t))return i(t)}},9504:(t,e,n)=>{var l=n(616),i=Function.prototype,a=i.call,s=l&&i.bind.bind(a,a);t.exports=l?s:function(t){return function(){return a.apply(t,arguments)}}},9429:(t,e,n)=>{var l=n(4576),i=n(6193);t.exports=function(t){if(i){try{return l.process.getBuiltinModule(t)}catch{}try{return Function('return require("'+t+'")')()}catch{}}}},7751:(t,e,n)=>{var l=n(4576),i=n(4901),a=function(t){return i(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?a(l[t]):l[t]&&l[t][e]}},1767:t=>{t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},8646:(t,e,n)=>{var l=n(9565),i=n(8551),a=n(1767),s=n(851);t.exports=function(t,e){(!e||"string"!=typeof t)&&i(t);var n=s(t);return a(i(void 0!==n?l(n,t):t))}},851:(t,e,n)=>{var l=n(6955),i=n(5966),a=n(4117),s=n(6269),r=n(8227),o=r("iterator");t.exports=function(t){if(!a(t))return i(t,o)||i(t,"@@iterator")||s[l(t)]}},81:(t,e,n)=>{var l=n(9565),i=n(9306),a=n(8551),s=n(6823),r=n(851),o=TypeError;t.exports=function(t,e){var n=arguments.length<2?r(t):e;if(i(n))return a(l(n,t));throw new o(s(t)+" is not iterable")}},5966:(t,e,n)=>{var l=n(9306),i=n(4117);t.exports=function(t,e){var n=t[e];return i(n)?void 0:l(n)}},3789:(t,e,n)=>{var l=n(9306),i=n(8551),a=n(9565),s=n(1291),r=n(1767),o="Invalid size",c=RangeError,d=TypeError,u=Math.max,h=function(t,e){this.set=t,this.size=u(e,0),this.has=l(t.has),this.keys=l(t.keys)};h.prototype={getIterator:function(){return r(i(a(this.keys,this.set)))},includes:function(t){return a(this.has,this.set,t)}},t.exports=function(t){i(t);var e=+t.size;if(e!==e)throw new d(o);var n=s(e);if(n<0)throw new c(o);return new h(t,n)}},4576:function(t){var e=function(t){return t&&t.Math===Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof global&&global)||e("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(t,e,n)=>{var l=n(9504),i=n(8981),a=l({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return a(i(t),e)}},421:t=>{t.exports={}},397:(t,e,n)=>{var l=n(7751);t.exports=l("document","documentElement")},5917:(t,e,n)=>{var l=n(3724),i=n(9039),a=n(4055);t.exports=!l&&!i((function(){return 7!==Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},7055:(t,e,n)=>{var l=n(9504),i=n(9039),a=n(2195),s=Object,r=l("".split);t.exports=i((function(){return!s("z").propertyIsEnumerable(0)}))?function(t){return"String"===a(t)?r(t,""):s(t)}:s},3167:(t,e,n)=>{var l=n(4901),i=n(34),a=n(2967);t.exports=function(t,e,n){var s,r;return a&&l(s=e.constructor)&&s!==n&&i(r=s.prototype)&&r!==n.prototype&&a(t,r),t}},3706:(t,e,n)=>{var l=n(9504),i=n(4901),a=n(7629),s=l(Function.toString);i(a.inspectSource)||(a.inspectSource=function(t){return s(t)}),t.exports=a.inspectSource},1181:(t,e,n)=>{var l,i,a,s=n(8622),r=n(4576),o=n(34),c=n(6699),d=n(9297),u=n(7629),h=n(6119),m=n(421),U="Object already initialized",p=r.TypeError,F=r.WeakMap,b=function(t){return a(t)?i(t):l(t,{})},Z=function(t){return function(e){var n;if(!o(e)||(n=i(e)).type!==t)throw new p("Incompatible receiver, "+t+" required");return n}};if(s||u.state){var N=u.state||(u.state=new F);N.get=N.get,N.has=N.has,N.set=N.set,l=function(t,e){if(N.has(t))throw new p(U);return e.facade=t,N.set(t,e),e},i=function(t){return N.get(t)||{}},a=function(t){return N.has(t)}}else{var R=h("state");m[R]=!0,l=function(t,e){if(d(t,R))throw new p(U);return e.facade=t,c(t,R,e),e},i=function(t){return d(t,R)?t[R]:{}},a=function(t){return d(t,R)}}t.exports={set:l,get:i,has:a,enforce:b,getterFor:Z}},4209:(t,e,n)=>{var l=n(8227),i=n(6269),a=l("iterator"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||s[a]===t)}},4376:(t,e,n)=>{var l=n(2195);t.exports=Array.isArray||function(t){return"Array"===l(t)}},1108:(t,e,n)=>{var l=n(6955);t.exports=function(t){var e=l(t);return"BigInt64Array"===e||"BigUint64Array"===e}},4901:t=>{var e="object"==typeof document&&document.all;t.exports=typeof e>"u"&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},2796:(t,e,n)=>{var l=n(9039),i=n(4901),a=/#|\.prototype\./,s=function(t,e){var n=o[r(t)];return n===d||n!==c&&(i(e)?l(e):!!e)},r=s.normalize=function(t){return String(t).replace(a,".").toLowerCase()},o=s.data={},c=s.NATIVE="N",d=s.POLYFILL="P";t.exports=s},4117:t=>{t.exports=function(t){return null==t}},34:(t,e,n)=>{var l=n(4901);t.exports=function(t){return"object"==typeof t?null!==t:l(t)}},3925:(t,e,n)=>{var l=n(34);t.exports=function(t){return l(t)||null===t}},6395:t=>{t.exports=!1},757:(t,e,n)=>{var l=n(7751),i=n(4901),a=n(1625),s=n(7040),r=Object;t.exports=s?function(t){return"symbol"==typeof t}:function(t){var e=l("Symbol");return i(e)&&a(e.prototype,r(t))}},507:(t,e,n)=>{var l=n(9565);t.exports=function(t,e,n){for(var i,a,s=n?t:t.iterator,r=t.next;!(i=l(r,s)).done;)if(a=e(i.value),void 0!==a)return a}},2652:(t,e,n)=>{var l=n(6080),i=n(9565),a=n(8551),s=n(6823),r=n(4209),o=n(6198),c=n(1625),d=n(81),u=n(851),h=n(9539),m=TypeError,U=function(t,e){this.stopped=t,this.result=e},p=U.prototype;t.exports=function(t,e,n){var F,b,Z,N,R,S,W,V=n&&n.that,Q=!(!n||!n.AS_ENTRIES),y=!(!n||!n.IS_RECORD),T=!(!n||!n.IS_ITERATOR),M=!(!n||!n.INTERRUPTED),g=l(e,V),E=function(t){return F&&h(F,"normal",t),new U(!0,t)},G=function(t){return Q?(a(t),M?g(t[0],t[1],E):g(t[0],t[1])):M?g(t,E):g(t)};if(y)F=t.iterator;else if(T)F=t;else{if(b=u(t),!b)throw new m(s(t)+" is not iterable");if(r(b)){for(Z=0,N=o(t);N>Z;Z++)if(R=G(t[Z]),R&&c(p,R))return R;return new U(!1)}F=d(t,b)}for(S=y?t.next:F.next;!(W=i(S,F)).done;){try{R=G(W.value)}catch(B){h(F,"throw",B)}if("object"==typeof R&&R&&c(p,R))return R}return new U(!1)}},9539:(t,e,n)=>{var l=n(9565),i=n(8551),a=n(5966);t.exports=function(t,e,n){var s,r;i(t);try{if(s=a(t,"return"),!s){if("throw"===e)throw n;return n}s=l(s,t)}catch(o){r=!0,s=o}if("throw"===e)throw n;if(r)throw s;return i(s),n}},9462:(t,e,n)=>{var l=n(9565),i=n(2360),a=n(6699),s=n(6279),r=n(8227),o=n(1181),c=n(5966),d=n(7657).IteratorPrototype,u=n(2529),h=n(9539),m=r("toStringTag"),U="IteratorHelper",p="WrapForValidIterator",F=o.set,b=function(t){var e=o.getterFor(t?p:U);return s(i(d),{next:function(){var n=e(this);if(t)return n.nextHandler();try{var l=n.done?void 0:n.nextHandler();return u(l,n.done)}catch(i){throw n.done=!0,i}},return:function(){var n=e(this),i=n.iterator;if(n.done=!0,t){var a=c(i,"return");return a?l(a,i):u(void 0,!0)}if(n.inner)try{h(n.inner.iterator,"normal")}catch(s){return h(i,"throw",s)}return i&&h(i,"normal"),u(void 0,!0)}})},Z=b(!0),N=b(!1);a(N,m,"Iterator Helper"),t.exports=function(t,e){var n=function(n,l){l?(l.iterator=n.iterator,l.next=n.next):l=n,l.type=e?p:U,l.nextHandler=t,l.counter=0,l.done=!1,F(this,l)};return n.prototype=e?Z:N,n}},713:(t,e,n)=>{var l=n(9565),i=n(9306),a=n(8551),s=n(1767),r=n(9462),o=n(6319),c=r((function(){var t=this.iterator,e=a(l(this.next,t)),n=this.done=!!e.done;if(!n)return o(t,this.mapper,[e.value,this.counter++],!0)}));t.exports=function(t){return a(this),i(t),new c(s(this),{mapper:t})}},7657:(t,e,n)=>{var l,i,a,s=n(9039),r=n(4901),o=n(34),c=n(2360),d=n(2787),u=n(6840),h=n(8227),m=n(6395),U=h("iterator"),p=!1;[].keys&&(a=[].keys(),"next"in a?(i=d(d(a)),i!==Object.prototype&&(l=i)):p=!0);var F=!o(l)||s((function(){var t={};return l[U].call(t)!==t}));F?l={}:m&&(l=c(l)),r(l[U])||u(l,U,(function(){return this})),t.exports={IteratorPrototype:l,BUGGY_SAFARI_ITERATORS:p}},6269:t=>{t.exports={}},6198:(t,e,n)=>{var l=n(8014);t.exports=function(t){return l(t.length)}},283:(t,e,n)=>{var l=n(9504),i=n(9039),a=n(4901),s=n(9297),r=n(3724),o=n(350).CONFIGURABLE,c=n(3706),d=n(1181),u=d.enforce,h=d.get,m=String,U=Object.defineProperty,p=l("".slice),F=l("".replace),b=l([].join),Z=r&&!i((function(){return 8!==U((function(){}),"length",{value:8}).length})),N=String(String).split("String"),R=t.exports=function(t,e,n){"Symbol("===p(m(e),0,7)&&(e="["+F(m(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!s(t,"name")||o&&t.name!==e)&&(r?U(t,"name",{value:e,configurable:!0}):t.name=e),Z&&n&&s(n,"arity")&&t.length!==n.arity&&U(t,"length",{value:n.arity});try{n&&s(n,"constructor")&&n.constructor?r&&U(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch{}var l=u(t);return s(l,"source")||(l.source=b(N,"string"==typeof e?e:"")),t};Function.prototype.toString=R((function(){return a(this)&&h(this).source||c(this)}),"toString")},741:t=>{var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function(t){var l=+t;return(l>0?n:e)(l)}},6043:(t,e,n)=>{var l=n(9306),i=TypeError,a=function(t){var e,n;this.promise=new t((function(t,l){if(void 0!==e||void 0!==n)throw new i("Bad Promise constructor");e=t,n=l})),this.resolve=l(e),this.reject=l(n)};t.exports.f=function(t){return new a(t)}},2603:(t,e,n)=>{var l=n(655);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:l(t)}},4149:t=>{var e=RangeError;t.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},2360:(t,e,n)=>{var l,i=n(8551),a=n(6801),s=n(8727),r=n(421),o=n(397),c=n(4055),d=n(6119),u=">",h="<",m="prototype",U="script",p=d("IE_PROTO"),F=function(){},b=function(t){return h+U+u+t+h+"/"+U+u},Z=function(t){t.write(b("")),t.close();var e=t.parentWindow.Object;return t=null,e},N=function(){var t,e=c("iframe"),n="java"+U+":";return e.style.display="none",o.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(b("document.F=Object")),t.close(),t.F},R=function(){try{l=new ActiveXObject("htmlfile")}catch{}R=typeof document<"u"?document.domain&&l?Z(l):N():Z(l);for(var t=s.length;t--;)delete R[m][s[t]];return R()};r[p]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(F[m]=i(t),n=new F,F[m]=null,n[p]=t):n=R(),void 0===e?n:a.f(n,e)}},6801:(t,e,n)=>{var l=n(3724),i=n(8686),a=n(4913),s=n(8551),r=n(5397),o=n(1072);e.f=l&&!i?Object.defineProperties:function(t,e){s(t);for(var n,l=r(e),i=o(e),c=i.length,d=0;c>d;)a.f(t,n=i[d++],l[n]);return t}},4913:(t,e,n)=>{var l=n(3724),i=n(5917),a=n(8686),s=n(8551),r=n(6969),o=TypeError,c=Object.defineProperty,d=Object.getOwnPropertyDescriptor,u="enumerable",h="configurable",m="writable";e.f=l?a?function(t,e,n){if(s(t),e=r(e),s(n),"function"==typeof t&&"prototype"===e&&"value"in n&&m in n&&!n[m]){var l=d(t,e);l&&l[m]&&(t[e]=n.value,n={configurable:h in n?n[h]:l[h],enumerable:u in n?n[u]:l[u],writable:!1})}return c(t,e,n)}:c:function(t,e,n){if(s(t),e=r(e),s(n),i)try{return c(t,e,n)}catch{}if("get"in n||"set"in n)throw new o("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},7347:(t,e,n)=>{var l=n(3724),i=n(9565),a=n(8773),s=n(6980),r=n(5397),o=n(6969),c=n(9297),d=n(5917),u=Object.getOwnPropertyDescriptor;e.f=l?u:function(t,e){if(t=r(t),e=o(e),d)try{return u(t,e)}catch{}if(c(t,e))return s(!i(a.f,t,e),t[e])}},8480:(t,e,n)=>{var l=n(1828),i=n(8727),a=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return l(t,a)}},3717:(t,e)=>{e.f=Object.getOwnPropertySymbols},2787:(t,e,n)=>{var l=n(9297),i=n(4901),a=n(8981),s=n(6119),r=n(2211),o=s("IE_PROTO"),c=Object,d=c.prototype;t.exports=r?c.getPrototypeOf:function(t){var e=a(t);if(l(e,o))return e[o];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof c?d:null}},1625:(t,e,n)=>{var l=n(9504);t.exports=l({}.isPrototypeOf)},1828:(t,e,n)=>{var l=n(9504),i=n(9297),a=n(5397),s=n(9617).indexOf,r=n(421),o=l([].push);t.exports=function(t,e){var n,l=a(t),c=0,d=[];for(n in l)!i(r,n)&&i(l,n)&&o(d,n);for(;e.length>c;)i(l,n=e[c++])&&(~s(d,n)||o(d,n));return d}},1072:(t,e,n)=>{var l=n(1828),i=n(8727);t.exports=Object.keys||function(t){return l(t,i)}},8773:(t,e)=>{var n={}.propertyIsEnumerable,l=Object.getOwnPropertyDescriptor,i=l&&!n.call({1:2},1);e.f=i?function(t){var e=l(this,t);return!!e&&e.enumerable}:n},2967:(t,e,n)=>{var l=n(6706),i=n(34),a=n(7750),s=n(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=l(Object.prototype,"__proto__","set"),t(n,[]),e=n instanceof Array}catch{}return function(n,l){return a(n),s(l),i(n)&&(e?t(n,l):n.__proto__=l),n}}():void 0)},4270:(t,e,n)=>{var l=n(9565),i=n(4901),a=n(34),s=TypeError;t.exports=function(t,e){var n,r;if("string"===e&&i(n=t.toString)&&!a(r=l(n,t))||i(n=t.valueOf)&&!a(r=l(n,t))||"string"!==e&&i(n=t.toString)&&!a(r=l(n,t)))return r;throw new s("Can't convert object to primitive value")}},5031:(t,e,n)=>{var l=n(7751),i=n(9504),a=n(8480),s=n(3717),r=n(8551),o=i([].concat);t.exports=l("Reflect","ownKeys")||function(t){var e=a.f(r(t)),n=s.f;return n?o(e,n(t)):e}},8235:(t,e,n)=>{var l=n(9504),i=n(9297),a=SyntaxError,s=parseInt,r=String.fromCharCode,o=l("".charAt),c=l("".slice),d=l(/./.exec),u={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":"\n","\\r":"\r","\\t":"\t"},h=/^[\da-f]{4}$/i,m=/^[\u0000-\u001F]$/;t.exports=function(t,e){for(var n=!0,l="";e{t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},7750:(t,e,n)=>{var l=n(4117),i=TypeError;t.exports=function(t){if(l(t))throw new i("Can't call method on "+t);return t}},9286:(t,e,n)=>{var l=n(4402),i=n(8469),a=l.Set,s=l.add;t.exports=function(t){var e=new a;return i(t,(function(t){s(e,t)})),e}},3440:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(9286),s=n(5170),r=n(3789),o=n(8469),c=n(507),d=i.has,u=i.remove;t.exports=function(t){var e=l(this),n=r(t),i=a(e);return s(e)<=n.size?o(e,(function(t){n.includes(t)&&u(i,t)})):c(n.getIterator(),(function(t){d(e,t)&&u(i,t)})),i}},4402:(t,e,n)=>{var l=n(9504),i=Set.prototype;t.exports={Set:Set,add:l(i.add),has:l(i.has),remove:l(i.delete),proto:i}},8750:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(5170),s=n(3789),r=n(8469),o=n(507),c=i.Set,d=i.add,u=i.has;t.exports=function(t){var e=l(this),n=s(t),i=new c;return a(e)>n.size?o(n.getIterator(),(function(t){u(e,t)&&d(i,t)})):r(e,(function(t){n.includes(t)&&d(i,t)})),i}},4449:(t,e,n)=>{var l=n(7080),i=n(4402).has,a=n(5170),s=n(3789),r=n(8469),o=n(507),c=n(9539);t.exports=function(t){var e=l(this),n=s(t);if(a(e)<=n.size)return!1!==r(e,(function(t){if(n.includes(t))return!1}),!0);var d=n.getIterator();return!1!==o(d,(function(t){if(i(e,t))return c(d,"normal",!1)}))}},3838:(t,e,n)=>{var l=n(7080),i=n(5170),a=n(8469),s=n(3789);t.exports=function(t){var e=l(this),n=s(t);return!(i(e)>n.size)&&!1!==a(e,(function(t){if(!n.includes(t))return!1}),!0)}},8527:(t,e,n)=>{var l=n(7080),i=n(4402).has,a=n(5170),s=n(3789),r=n(507),o=n(9539);t.exports=function(t){var e=l(this),n=s(t);if(a(e){var l=n(9504),i=n(507),a=n(4402),s=a.Set,r=a.proto,o=l(r.forEach),c=l(r.keys),d=c(new s).next;t.exports=function(t,e,n){return n?i({iterator:c(t),next:d},e):o(t,e)}},4916:(t,e,n)=>{var l=n(7751),i=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};t.exports=function(t){var e=l("Set");try{(new e)[t](i(0));try{return(new e)[t](i(-1)),!1}catch{return!0}}catch{return!1}}},5170:(t,e,n)=>{var l=n(6706),i=n(4402);t.exports=l(i.proto,"size","get")||function(t){return t.size}},3650:(t,e,n)=>{var l=n(7080),i=n(4402),a=n(9286),s=n(3789),r=n(507),o=i.add,c=i.has,d=i.remove;t.exports=function(t){var e=l(this),n=s(t).getIterator(),i=a(e);return r(n,(function(t){c(e,t)?d(i,t):o(i,t)})),i}},4204:(t,e,n)=>{var l=n(7080),i=n(4402).add,a=n(9286),s=n(3789),r=n(507);t.exports=function(t){var e=l(this),n=s(t).getIterator(),o=a(e);return r(n,(function(t){i(o,t)})),o}},6119:(t,e,n)=>{var l=n(5745),i=n(3392),a=l("keys");t.exports=function(t){return a[t]||(a[t]=i(t))}},7629:(t,e,n)=>{var l=n(6395),i=n(4576),a=n(9433),s="__core-js_shared__",r=t.exports=i[s]||a(s,{});(r.versions||(r.versions=[])).push({version:"3.39.0",mode:l?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(t,e,n)=>{var l=n(7629);t.exports=function(t,e){return l[t]||(l[t]=e||{})}},1548:(t,e,n)=>{var l=n(4576),i=n(9039),a=n(9519),s=n(4215),r=l.structuredClone;t.exports=!!r&&!i((function(){if("DENO"===s&&a>92||"NODE"===s&&a>94||"BROWSER"===s&&a>97)return!1;var t=new ArrayBuffer(8),e=r(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},4495:(t,e,n)=>{var l=n(9519),i=n(9039),a=n(4576),s=a.String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol("symbol detection");return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&l&&l<41}))},5610:(t,e,n)=>{var l=n(1291),i=Math.max,a=Math.min;t.exports=function(t,e){var n=l(t);return n<0?i(n+e,0):a(n,e)}},5854:(t,e,n)=>{var l=n(2777),i=TypeError;t.exports=function(t){var e=l(t,"number");if("number"==typeof e)throw new i("Can't convert number to bigint");return BigInt(e)}},7696:(t,e,n)=>{var l=n(1291),i=n(8014),a=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=l(t),n=i(e);if(e!==n)throw new a("Wrong length or index");return n}},5397:(t,e,n)=>{var l=n(7055),i=n(7750);t.exports=function(t){return l(i(t))}},1291:(t,e,n)=>{var l=n(741);t.exports=function(t){var e=+t;return e!==e||0===e?0:l(e)}},8014:(t,e,n)=>{var l=n(1291),i=Math.min;t.exports=function(t){var e=l(t);return e>0?i(e,9007199254740991):0}},8981:(t,e,n)=>{var l=n(7750),i=Object;t.exports=function(t){return i(l(t))}},9590:(t,e,n)=>{var l=n(1291),i=RangeError;t.exports=function(t){var e=l(t);if(e<0)throw new i("The argument can't be less than 0");return e}},2777:(t,e,n)=>{var l=n(9565),i=n(34),a=n(757),s=n(5966),r=n(4270),o=n(8227),c=TypeError,d=o("toPrimitive");t.exports=function(t,e){if(!i(t)||a(t))return t;var n,o=s(t,d);if(o){if(void 0===e&&(e="default"),n=l(o,t,e),!i(n)||a(n))return n;throw new c("Can't convert object to primitive value")}return void 0===e&&(e="number"),r(t,e)}},6969:(t,e,n)=>{var l=n(2777),i=n(757);t.exports=function(t){var e=l(t,"string");return i(e)?e:e+""}},2140:(t,e,n)=>{var l=n(8227),i=l("toStringTag"),a={};a[i]="z",t.exports="[object z]"===String(a)},655:(t,e,n)=>{var l=n(6955),i=String;t.exports=function(t){if("Symbol"===l(t))throw new TypeError("Cannot convert a Symbol value to a string");return i(t)}},6823:t=>{var e=String;t.exports=function(t){try{return e(t)}catch{return"Object"}}},3392:(t,e,n)=>{var l=n(9504),i=0,a=Math.random(),s=l(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++i+a,36)}},7040:(t,e,n)=>{var l=n(4495);t.exports=l&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(t,e,n)=>{var l=n(3724),i=n(9039);t.exports=l&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:t=>{var e=TypeError;t.exports=function(t,n){if(t{var l=n(4576),i=n(4901),a=l.WeakMap;t.exports=i(a)&&/native code/.test(String(a))},8227:(t,e,n)=>{var l=n(4576),i=n(5745),a=n(9297),s=n(3392),r=n(4495),o=n(7040),c=l.Symbol,d=i("wks"),u=o?c.for||c:c&&c.withoutSetter||s;t.exports=function(t){return a(d,t)||(d[t]=r&&a(c,t)?c[t]:u("Symbol."+t)),d[t]}},6573:(t,e,n)=>{var l=n(3724),i=n(2106),a=n(3238),s=ArrayBuffer.prototype;l&&!("detached"in s)&&i(s,"detached",{configurable:!0,get:function(){return a(this)}})},7936:(t,e,n)=>{var l=n(6518),i=n(5636);i&&l({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return i(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(t,e,n)=>{var l=n(6518),i=n(5636);i&&l({target:"ArrayBuffer",proto:!0},{transfer:function(){return i(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(t,e,n)=>{var l=n(6518),i=n(8981),a=n(6198),s=n(4527),r=n(6837),o=n(9039),c=o((function(){return 4294967297!==[].push.call({length:4294967296},1)})),d=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}},u=c||!d();l({target:"Array",proto:!0,arity:1,forced:u},{push:function(t){var e=i(this),n=a(e),l=arguments.length;r(n+l);for(var o=0;o{var l=n(6518),i=n(4576),a=n(679),s=n(8551),r=n(4901),o=n(2787),c=n(2106),d=n(4659),u=n(9039),h=n(9297),m=n(8227),U=n(7657).IteratorPrototype,p=n(3724),F=n(6395),b="constructor",Z="Iterator",N=m("toStringTag"),R=TypeError,S=i[Z],W=F||!r(S)||S.prototype!==U||!u((function(){S({})})),V=function(){if(a(this,U),o(this)===U)throw new R("Abstract class Iterator not directly constructable")},Q=function(t,e){p?c(U,t,{configurable:!0,get:function(){return e},set:function(e){if(s(this),this===U)throw new R("You can't redefine this property");h(this,t)?this[t]=e:d(this,t,e)}}):U[t]=e};h(U,N)||Q(N,Z),(W||!h(U,b)||U[b]===Object)&&Q(b,V),V.prototype=U,l({global:!0,constructor:!0,forced:W},{Iterator:V})},9314:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(8551),s=n(1767),r=n(4149),o=n(9590),c=n(9462),d=n(6395),u=c((function(){for(var t,e,n=this.iterator,l=this.next;this.remaining;)if(this.remaining--,t=a(i(l,n)),e=this.done=!!t.done,e)return;if(t=a(i(l,n)),e=this.done=!!t.done,!e)return t.value}));l({target:"Iterator",proto:!0,real:!0,forced:d},{drop:function(t){a(this);var e=o(r(+t));return new u(s(this),{remaining:e})}})},1148:(t,e,n)=>{var l=n(6518),i=n(2652),a=n(9306),s=n(8551),r=n(1767);l({target:"Iterator",proto:!0,real:!0},{every:function(t){s(this),a(t);var e=r(this),n=0;return!i(e,(function(e,l){if(!t(e,n++))return l()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},2489:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(9462),c=n(6319),d=n(6395),u=o((function(){for(var t,e,n,l=this.iterator,a=this.predicate,r=this.next;;){if(t=s(i(r,l)),e=this.done=!!t.done,e)return;if(n=t.value,c(l,a,[n,this.counter++],!0))return n}}));l({target:"Iterator",proto:!0,real:!0,forced:d},{filter:function(t){return s(this),a(t),new u(r(this),{predicate:t})}})},531:(t,e,n)=>{var l=n(6518),i=n(9565),a=n(9306),s=n(8551),r=n(1767),o=n(8646),c=n(9462),d=n(9539),u=n(6395),h=c((function(){for(var t,e,n=this.iterator,l=this.mapper;;){if(e=this.inner)try{if(t=s(i(e.next,e.iterator)),!t.done)return t.value;this.inner=null}catch(a){d(n,"throw",a)}if(t=s(i(this.next,n)),this.done=!!t.done)return;try{this.inner=o(l(t.value,this.counter++),!1)}catch(a){d(n,"throw",a)}}}));l({target:"Iterator",proto:!0,real:!0,forced:u},{flatMap:function(t){return s(this),a(t),new h(r(this),{mapper:t,inner:null})}})},1701:(t,e,n)=>{var l=n(6518),i=n(713),a=n(6395);l({target:"Iterator",proto:!0,real:!0,forced:a},{map:i})},3579:(t,e,n)=>{var l=n(6518),i=n(2652),a=n(9306),s=n(8551),r=n(1767);l({target:"Iterator",proto:!0,real:!0},{some:function(t){s(this),a(t);var e=r(this),n=0;return i(e,(function(e,l){if(t(e,n++))return l()}),{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},1689:(t,e,n)=>{var l=n(6518),i=n(4576),a=n(8745),s=n(7680),r=n(6043),o=n(9306),c=n(1103),d=i.Promise,u=!1,h=!d||!d.try||c((function(){d.try((function(t){u=8===t}),8)})).error||!u;l({target:"Promise",stat:!0,forced:h},{try:function(t){var e=arguments.length>1?s(arguments,1):[],n=r.f(this),l=c((function(){return a(o(t),void 0,e)}));return(l.error?n.reject:n.resolve)(l.value),n.promise}})},4628:(t,e,n)=>{var l=n(6518),i=n(6043);l({target:"Promise",stat:!0},{withResolvers:function(){var t=i.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},7642:(t,e,n)=>{var l=n(6518),i=n(3440),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("difference")},{difference:i})},8004:(t,e,n)=>{var l=n(6518),i=n(9039),a=n(8750),s=n(4916),r=!s("intersection")||i((function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))}));l({target:"Set",proto:!0,real:!0,forced:r},{intersection:a})},3853:(t,e,n)=>{var l=n(6518),i=n(4449),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isDisjointFrom")},{isDisjointFrom:i})},5876:(t,e,n)=>{var l=n(6518),i=n(3838),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isSubsetOf")},{isSubsetOf:i})},2475:(t,e,n)=>{var l=n(6518),i=n(8527),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("isSupersetOf")},{isSupersetOf:i})},5024:(t,e,n)=>{var l=n(6518),i=n(3650),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("symmetricDifference")},{symmetricDifference:i})},1698:(t,e,n)=>{var l=n(6518),i=n(4204),a=n(4916);l({target:"Set",proto:!0,real:!0,forced:!a("union")},{union:i})},7467:(t,e,n)=>{var l=n(7628),i=n(4644),a=i.aTypedArray,s=i.exportTypedArrayMethod,r=i.getTypedArrayConstructor;s("toReversed",(function(){return l(a(this),r(this))}))},4732:(t,e,n)=>{var l=n(4644),i=n(9504),a=n(9306),s=n(5370),r=l.aTypedArray,o=l.getTypedArrayConstructor,c=l.exportTypedArrayMethod,d=i(l.TypedArrayPrototype.sort);c("toSorted",(function(t){void 0!==t&&a(t);var e=r(this),n=s(o(e),e);return d(n,t)}))},9577:(t,e,n)=>{var l=n(9928),i=n(4644),a=n(1108),s=n(1291),r=n(5854),o=i.aTypedArray,c=i.getTypedArrayConstructor,d=i.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();d("with",(function(t,e){var n=o(this),i=s(t),d=a(n)?r(e):+e;return l(n,c(n),i,d)}),!u)},8992:(t,e,n)=>{n(8111)},4743:(t,e,n)=>{n(9314)},3215:(t,e,n)=>{n(1148)},4520:(t,e,n)=>{n(2489)},670:(t,e,n)=>{n(531)},1454:(t,e,n)=>{n(1701)},7550:(t,e,n)=>{n(3579)},8335:(t,e,n)=>{var l=n(6518),i=n(3724),a=n(4576),s=n(7751),r=n(9504),o=n(9565),c=n(4901),d=n(34),u=n(4376),h=n(9297),m=n(655),U=n(6198),p=n(4659),F=n(9039),b=n(8235),Z=n(4495),N=a.JSON,R=a.Number,S=a.SyntaxError,W=N&&N.parse,V=s("Object","keys"),Q=Object.getOwnPropertyDescriptor,y=r("".charAt),T=r("".slice),M=r(/./.exec),g=r([].push),E=/^\d$/,G=/^[1-9]$/,B=/^[\d-]$/,J=/^[\t\n\r ]$/,k=0,Y=1,C=function(t,e){t=m(t);var n=new f(t,0),l=n.parse(),i=l.value,a=n.skip(J,l.end);if(a{n(1689)},4979:(t,e,n)=>{var l=n(6518),i=n(4576),a=n(7751),s=n(6980),r=n(4913).f,o=n(9297),c=n(679),d=n(3167),u=n(2603),h=n(5002),m=n(8574),U=n(3724),p=n(6395),F="DOMException",b=a("Error"),Z=a(F),N=function(){c(this,R);var t=arguments.length,e=u(t<1?void 0:arguments[0]),n=u(t<2?void 0:arguments[1],"Error"),l=new Z(e,n),i=new b(e);return i.name=F,r(l,"stack",s(1,m(i.stack,1))),d(l,this,N),l},R=N.prototype=Z.prototype,S="stack"in new b(F),W="stack"in new Z(1,2),V=Z&&U&&Object.getOwnPropertyDescriptor(i,F),Q=!!V&&!(V.writable&&V.configurable),y=S&&!Q&&!W;l({global:!0,constructor:!0,forced:p||y},{DOMException:y?N:Z});var T=a(F),M=T.prototype;if(M.constructor!==T)for(var g in p||r(M,"constructor",s(1,T)),h)if(o(h,g)){var E=h[g],G=E.s;o(T,G)||r(T,G,s(6,E.c))}},4603:(t,e,n)=>{var l=n(6840),i=n(9504),a=n(655),s=n(2812),r=URLSearchParams,o=r.prototype,c=i(o.append),d=i(o.delete),u=i(o.forEach),h=i([].push),m=new r("a=1&a=2&b=3");m.delete("a",1),m.delete("b",void 0),m+""!="a=2"&&l(o,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return d(this,t);var l=[];u(this,(function(t,e){h(l,{key:e,value:t})})),s(e,1);for(var i,r=a(t),o=a(n),m=0,U=0,p=!1,F=l.length;m{var l=n(6840),i=n(9504),a=n(655),s=n(2812),r=URLSearchParams,o=r.prototype,c=i(o.getAll),d=i(o.has),u=new r("a=1");(u.has("a",2)||!u.has("a",void 0))&&l(o,"has",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return d(this,t);var l=c(this,t);s(e,1);for(var i=a(n),r=0;r{var l=n(3724),i=n(9504),a=n(2106),s=URLSearchParams.prototype,r=i(s.forEach);l&&!("size"in s)&&a(s,"size",{get:function(){var t=0;return r(this,(function(){t++})),t},configurable:!0,enumerable:!0})}},aa={};function sa(t){var e=aa[t];if(void 0!==e)return e.exports;var n=aa[t]={exports:{}};return ia[t].call(n.exports,n,n.exports,sa),n.exports}sa.d=(t,e)=>{for(var n in e)sa.o(e,n)&&!sa.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},sa.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var ra=globalThis.pdfjsLib={};sa.d(ra,{AbortException:()=>za,AnnotationEditorLayer:()=>xR,AnnotationEditorParamsType:()=>ba,AnnotationEditorType:()=>Fa,AnnotationEditorUIManager:()=>Xo,AnnotationLayer:()=>QF,AnnotationMode:()=>Ua,ColorPicker:()=>cZ,DOMSVGFactory:()=>wU,DrawLayer:()=>tS,FeatureTest:()=>Aa,GlobalWorkerOptions:()=>rh,ImageKind:()=>Ra,InvalidPDFException:()=>fa,MissingPDFException:()=>La,OPS:()=>Qa,OutputScale:()=>ks,PDFDataRangeTransport:()=>Am,PDFDateString:()=>Ts,PDFWorker:()=>pU,PasswordResponses:()=>ya,PermissionFlag:()=>Za,PixelsPerInch:()=>hs,RenderingCancelledException:()=>ps,TextLayer:()=>Ym,TouchManager:()=>bc,UnexpectedResponseException:()=>wa,Util:()=>ns,VerbosityLevel:()=>Va,XfaLayer:()=>xU,build:()=>XU,createValidAbsoluteUrl:()=>Ya,fetchData:()=>ms,getDocument:()=>zm,getFilenameFromUrl:()=>Zs,getPdfFilenameFromUrl:()=>Ns,getXfaPageViewport:()=>Ms,isDataScheme:()=>Fs,isPdfFile:()=>bs,noContextMenu:()=>Ws,normalizeUnicode:()=>ss,setLayerDimensions:()=>Js,shadow:()=>Ca,stopEvent:()=>Vs,version:()=>CU}),sa(4114),sa(6573),sa(8100),sa(7936),sa(7467),sa(4732),sa(9577),sa(5247),sa(4979),sa(4603),sa(7566),sa(8721);const oa="object"==typeof process&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&"browser"!==process.type),ca=[1,0,0,1,0,0],da=[.001,0,0,.001,0,0],ua=1e7,ha=1.35,ma={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},Ua={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},pa="pdfjs_internal_editor_",Fa={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},ba={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35,DRAW_STEP:41},Za={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},Na={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Ra={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},Sa={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},Wa={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Va={ERRORS:0,WARNINGS:1,INFOS:5},Qa={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93},ya={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Ta=Va.WARNINGS;function Ma(t){Number.isInteger(t)&&(Ta=t)}function ga(){return Ta}function Ea(t){Ta>=Va.INFOS&&console.log(`Info: ${t}`)}function Ga(t){Ta>=Va.WARNINGS&&console.log(`Warning: ${t}`)}function Ba(t){throw new Error(t)}function Ja(t,e){t||Ba(e)}function ka(t){switch(null==t?void 0:t.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Ya(t,e=null,n=null){if(!t)return null;try{if(n&&"string"==typeof t){if(n.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);(null==e?void 0:e.length)>=2&&(t=`http://${t}`)}if(n.tryConvertEncoding)try{t=ls(t)}catch{}}const l=e?new URL(t,e):new URL(t);if(ka(l))return l}catch{}return null}function Ca(t,e,n,l=!1){return Object.defineProperty(t,e,{value:n,enumerable:!l,configurable:!0,writable:!1}),n}const Xa=function(){function t(t,e){this.message=t,this.name=e}return t.prototype=new Error,t.constructor=t,t}();class Ia extends Xa{constructor(t,e){super(t,"PasswordException"),this.code=e}}class Da extends Xa{constructor(t,e){super(t,"UnknownErrorException"),this.details=e}}let fa=class extends Xa{constructor(t){super(t,"InvalidPDFException")}},La=class extends Xa{constructor(t){super(t,"MissingPDFException")}},wa=class extends Xa{constructor(t,e){super(t,"UnexpectedResponseException"),this.status=e}};class xa extends Xa{constructor(t){super(t,"FormatError")}}let za=class extends Xa{constructor(t){super(t,"AbortException")}};function va(t){("object"!=typeof t||void 0===(null==t?void 0:t.length))&&Ba("Invalid argument for bytesToString");const e=t.length,n=8192;if(e>24&255,t>>16&255,t>>8&255,255&t)}function ja(t){const e=Object.create(null);for(const[n,l]of t)e[n]=l;return e}function Ka(){const t=new Uint8Array(4);return t[0]=1,1===new Uint32Array(t.buffer,0,1)[0]}function Pa(){try{return new Function(""),!0}catch{return!1}}class Aa{static get isLittleEndian(){return Ca(this,"isLittleEndian",Ka())}static get isEvalSupported(){return Ca(this,"isEvalSupported",Pa())}static get isOffscreenCanvasSupported(){return Ca(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return Ca(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){return typeof navigator<"u"&&"string"==typeof(null==navigator?void 0:navigator.platform)?Ca(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:"string"==typeof(null==navigator?void 0:navigator.userAgent)&&navigator.userAgent.includes("Firefox")}):Ca(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){var t,e;return Ca(this,"isCSSRoundSupported",null==(e=null==(t=globalThis.CSS)?void 0:t.supports)?void 0:e.call(t,"width: round(1.5px, 1px)"))}}const Ha=Array.from(Array(256).keys(),(t=>t.toString(16).padStart(2,"0")));var qa,$a,ts,es;let ns=($a=class{static makeHexColor(t,e,n){return`#${Ha[t]}${Ha[e]}${Ha[n]}`}static scaleMinMax(t,e){let n;t[0]?(t[0]<0&&(n=e[0],e[0]=e[2],e[2]=n),e[0]*=t[0],e[2]*=t[0],t[3]<0&&(n=e[1],e[1]=e[3],e[3]=n),e[1]*=t[3],e[3]*=t[3]):(n=e[0],e[0]=e[1],e[1]=n,n=e[2],e[2]=e[3],e[3]=n,t[1]<0&&(n=e[1],e[1]=e[3],e[3]=n),e[1]*=t[1],e[3]*=t[1],t[2]<0&&(n=e[0],e[0]=e[2],e[2]=n),e[0]*=t[2],e[2]*=t[2]),e[0]+=t[4],e[1]+=t[5],e[2]+=t[4],e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static applyTransform(t,e){const n=t[0]*e[0]+t[1]*e[2]+e[4],l=t[0]*e[1]+t[1]*e[3]+e[5];return[n,l]}static applyInverseTransform(t,e){const n=e[0]*e[3]-e[1]*e[2],l=(t[0]*e[3]-t[1]*e[2]+e[2]*e[5]-e[4]*e[3])/n,i=(-t[0]*e[1]+t[1]*e[0]+e[4]*e[1]-e[5]*e[0])/n;return[l,i]}static getAxialAlignedBoundingBox(t,e){const n=this.applyTransform(t,e),l=this.applyTransform(t.slice(2,4),e),i=this.applyTransform([t[0],t[3]],e),a=this.applyTransform([t[2],t[1]],e);return[Math.min(n[0],l[0],i[0],a[0]),Math.min(n[1],l[1],i[1],a[1]),Math.max(n[0],l[0],i[0],a[0]),Math.max(n[1],l[1],i[1],a[1])]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t){const e=[t[0],t[2],t[1],t[3]],n=t[0]*e[0]+t[1]*e[2],l=t[0]*e[1]+t[1]*e[3],i=t[2]*e[0]+t[3]*e[2],a=t[2]*e[1]+t[3]*e[3],s=(n+a)/2,r=Math.sqrt((n+a)**2-4*(n*a-i*l))/2,o=s+r||1,c=s-r||1;return[Math.sqrt(o),Math.sqrt(c)]}static normalizeRect(t){const e=t.slice(0);return t[0]>t[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e}static intersect(t,e){const n=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),l=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(n>l)return null;const i=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),a=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return i>a?null:[n,i,l,a]}static bezierBoundingBox(t,e,n,l,i,a,s,r,o){return o?(o[0]=Math.min(o[0],t,s),o[1]=Math.min(o[1],e,r),o[2]=Math.max(o[2],t,s),o[3]=Math.max(o[3],e,r)):o=[Math.min(t,s),Math.min(e,r),Math.max(t,s),Math.max(e,r)],na(this,qa,es).call(this,t,n,i,s,e,l,a,r,3*(3*(n-i)-t+s),6*(t-2*n+i),3*(n-t),o),na(this,qa,es).call(this,t,n,i,s,e,l,a,r,3*(3*(l-a)-e+r),6*(e-2*l+a),3*(l-e),o),o}},qa=new WeakSet,ts=function(t,e,n,l,i,a,s,r,o,c){if(o<=0||o>=1)return;const d=1-o,u=o*o,h=u*o,m=d*(d*(d*t+3*o*e)+3*u*n)+h*l,U=d*(d*(d*i+3*o*a)+3*u*s)+h*r;c[0]=Math.min(c[0],m),c[1]=Math.min(c[1],U),c[2]=Math.max(c[2],m),c[3]=Math.max(c[3],U)},es=function(t,e,n,l,i,a,s,r,o,c,d,u){if(Math.abs(o)<1e-12)return void(Math.abs(c)>=1e-12&&na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,-d/c,u));const h=c**2-4*d*o;if(h<0)return;const m=Math.sqrt(h),U=2*o;na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,(-c+m)/U,u),na(this,qa,ts).call(this,t,e,n,l,i,a,s,r,(-c-m)/U,u)},ta($a,qa),$a);function ls(t){return decodeURIComponent(escape(t))}let is=null,as=null;function ss(t){return is||(is=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,as=new Map([["ſt","ſt"]])),t.replaceAll(is,((t,e,n)=>e?e.normalize("NFKC"):as.get(n)))}function rs(){if("function"==typeof crypto.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);return crypto.getRandomValues(t),va(t)}const os="pdfjs_internal_id_";function cs(t){return Uint8Array.prototype.toBase64?t.toBase64():btoa(va(t))}sa(4628),sa(7642),sa(8004),sa(3853),sa(5876),sa(2475),sa(5024),sa(1698),sa(1454),sa(8992),sa(4743),sa(3215),sa(7550),sa(8335);const ds="http://www.w3.org/2000/svg";var us;let hs=(us=class{},Hi(us,"CSS",96),Hi(us,"PDF",72),Hi(us,"PDF_TO_CSS_UNITS",us.CSS/us.PDF),us);async function ms(t,e="text"){if(Ss(t,document.baseURI)){const n=await fetch(t);if(!n.ok)throw new Error(n.statusText);switch(e){case"arraybuffer":return n.arrayBuffer();case"blob":return n.blob();case"json":return n.json()}return n.text()}return new Promise(((n,l)=>{const i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType=e,i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(200===i.status||0===i.status){switch(e){case"arraybuffer":case"blob":case"json":return void n(i.response)}return void n(i.responseText)}l(new Error(i.statusText))}},i.send(null)}))}class Us{constructor({viewBox:t,userUnit:e,scale:n,rotation:l,offsetX:i=0,offsetY:a=0,dontFlip:s=!1}){this.viewBox=t,this.userUnit=e,this.scale=n,this.rotation=l,this.offsetX=i,this.offsetY=a,n*=e;const r=(t[2]+t[0])/2,o=(t[3]+t[1])/2;let c,d,u,h,m,U,p,F;switch(l%=360,l<0&&(l+=360),l){case 180:c=-1,d=0,u=0,h=1;break;case 90:c=0,d=1,u=1,h=0;break;case 270:c=0,d=-1,u=-1,h=0;break;case 0:c=1,d=0,u=0,h=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}s&&(u=-u,h=-h),0===c?(m=Math.abs(o-t[1])*n+i,U=Math.abs(r-t[0])*n+a,p=(t[3]-t[1])*n,F=(t[2]-t[0])*n):(m=Math.abs(r-t[0])*n+i,U=Math.abs(o-t[1])*n+a,p=(t[2]-t[0])*n,F=(t[3]-t[1])*n),this.transform=[c*n,d*n,u*n,h*n,m-c*n*r-u*n*o,U-d*n*r-h*n*o],this.width=p,this.height=F}get rawDims(){const{userUnit:t,viewBox:e}=this,n=e.map((e=>e*t));return Ca(this,"rawDims",{pageWidth:n[2]-n[0],pageHeight:n[3]-n[1],pageX:n[0],pageY:n[1]})}clone({scale:t=this.scale,rotation:e=this.rotation,offsetX:n=this.offsetX,offsetY:l=this.offsetY,dontFlip:i=!1}={}){return new Us({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:t,rotation:e,offsetX:n,offsetY:l,dontFlip:i})}convertToViewportPoint(t,e){return ns.applyTransform([t,e],this.transform)}convertToViewportRectangle(t){const e=ns.applyTransform([t[0],t[1]],this.transform),n=ns.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]}convertToPdfPoint(t,e){return ns.applyInverseTransform([t,e],this.transform)}}let ps=class extends Xa{constructor(t,e=0){super(t,"RenderingCancelledException"),this.extraDelay=e}};function Fs(t){const e=t.length;let n=0;for(;n=1&&l<=12?l-1:0;let i=parseInt(e[3],10);i=i>=1&&i<=31?i:1;let a=parseInt(e[4],10);a=a>=0&&a<=23?a:0;let s=parseInt(e[5],10);s=s>=0&&s<=59?s:0;let r=parseInt(e[6],10);r=r>=0&&r<=59?r:0;const o=e[7]||"Z";let c=parseInt(e[8],10);c=c>=0&&c<=23?c:0;let d=parseInt(e[9],10)||0;return d=d>=0&&d<=59?d:0,"-"===o?(a+=c,s+=d):"+"===o&&(a-=c,s-=d),new Date(Date.UTC(n,l,i,a,s,r))}},ys=new WeakMap,ta(Qs,ys),Qs);function Ms(t,{scale:e=1,rotation:n=0}){const{width:l,height:i}=t.attributes.style,a=[0,0,parseInt(l),parseInt(i)];return new Us({viewBox:a,userUnit:1,scale:e,rotation:n})}function gs(t){if(t.startsWith("#")){const e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}return t.startsWith("rgb(")?t.slice(4,-1).split(",").map((t=>parseInt(t))):t.startsWith("rgba(")?t.slice(5,-1).split(",").map((t=>parseInt(t))).slice(0,3):(Ga(`Not a valid color format: "${t}"`),[0,0,0])}function Es(t){const e=document.createElement("span");e.style.visibility="hidden",document.body.append(e);for(const n of t.keys()){e.style.color=n;const l=window.getComputedStyle(e).color;t.set(n,gs(l))}e.remove()}function Gs(t){const{a:e,b:n,c:l,d:i,e:a,f:s}=t.getTransform();return[e,n,l,i,a,s]}function Bs(t){const{a:e,b:n,c:l,d:i,e:a,f:s}=t.getTransform().invertSelf();return[e,n,l,i,a,s]}function Js(t,e,n=!1,l=!0){if(e instanceof Us){const{pageWidth:l,pageHeight:i}=e.rawDims,{style:a}=t,s=Aa.isCSSRoundSupported,r=`var(--scale-factor) * ${l}px`,o=`var(--scale-factor) * ${i}px`,c=s?`round(down, ${r}, var(--scale-round-x, 1px))`:`calc(${r})`,d=s?`round(down, ${o}, var(--scale-round-y, 1px))`:`calc(${o})`;n&&e.rotation%180!==0?(a.width=d,a.height=c):(a.width=c,a.height=d)}l&&t.setAttribute("data-main-rotation",e.rotation)}let ks=class{constructor(){const t=window.devicePixelRatio||1;this.sx=t,this.sy=t}get scaled(){return 1!==this.sx||1!==this.sy}get symmetric(){return this.sx===this.sy}};var Ys,Cs,Xs,Is,Ds,fs,Ls,ws,xs,zs,vs,Os,_s,js;const Ks=class t{constructor(e){ta(this,xs),ta(this,Ys,null),ta(this,Cs,null),ta(this,Xs),ta(this,Is,null),ta(this,Ds,null),ea(this,Xs,e),$i(t,fs)||ea(t,fs,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button"}))}render(){const e=ea(this,Ys,document.createElement("div"));e.classList.add("editToolbar","hidden"),e.setAttribute("role","toolbar");const n=$i(this,Xs)._uiManager._signal;e.addEventListener("contextmenu",Ws,{signal:n}),e.addEventListener("pointerdown",na(t,Ls,ws),{signal:n});const l=ea(this,Is,document.createElement("div"));l.className="buttons",e.append(l);const i=$i(this,Xs).toolbarPosition;if(i){const{style:t}=e,n="ltr"===$i(this,Xs)._uiManager.direction?1-i[0]:i[0];t.insetInlineEnd=100*n+"%",t.top=`calc(${100*i[1]}% + var(--editor-toolbar-vert-offset))`}return na(this,xs,_s).call(this),e}get div(){return $i(this,Ys)}hide(){var t;$i(this,Ys).classList.add("hidden"),null==(t=$i(this,Cs))||t.hideDropdown()}show(){var t;$i(this,Ys).classList.remove("hidden"),null==(t=$i(this,Ds))||t.shown()}async addAltText(t){const e=await t.render();na(this,xs,Os).call(this,e),$i(this,Is).prepend(e,$i(this,xs,js)),ea(this,Ds,t)}addColorPicker(t){ea(this,Cs,t);const e=t.renderButton();na(this,xs,Os).call(this,e),$i(this,Is).prepend(e,$i(this,xs,js))}remove(){var t;$i(this,Ys).remove(),null==(t=$i(this,Cs))||t.destroy(),ea(this,Cs,null)}};Ys=new WeakMap,Cs=new WeakMap,Xs=new WeakMap,Is=new WeakMap,Ds=new WeakMap,fs=new WeakMap,Ls=new WeakSet,ws=function(t){t.stopPropagation()},xs=new WeakSet,zs=function(t){$i(this,Xs)._focusEventsAllowed=!1,Vs(t)},vs=function(t){$i(this,Xs)._focusEventsAllowed=!0,Vs(t)},Os=function(t){const e=$i(this,Xs)._uiManager._signal;t.addEventListener("focusin",na(this,xs,zs).bind(this),{capture:!0,signal:e}),t.addEventListener("focusout",na(this,xs,vs).bind(this),{capture:!0,signal:e}),t.addEventListener("contextmenu",Ws,{signal:e})},_s=function(){const{editorType:t,_uiManager:e}=$i(this,Xs),n=document.createElement("button");n.className="delete",n.tabIndex=0,n.setAttribute("data-l10n-id",$i(Ks,fs)[t]),na(this,xs,Os).call(this,n),n.addEventListener("click",(t=>{e.delete()}),{signal:e._signal}),$i(this,Is).append(n)},js=function(){const t=document.createElement("div");return t.className="divider",t},ta(Ks,Ls),ta(Ks,fs,null);let Ps=Ks;var As,Hs,qs,$s,tr,er,nr,lr,ir,ar,sr,rr,or;class cr{constructor(t){ta(this,$s),ta(this,As,null),ta(this,Hs,null),ta(this,qs),ea(this,qs,t)}show(t,e,n){const[l,i]=na(this,$s,er).call(this,e,n),{style:a}=$i(this,Hs)||ea(this,Hs,na(this,$s,tr).call(this));t.append($i(this,Hs)),a.insetInlineEnd=100*l+"%",a.top=`calc(${100*i}% + var(--editor-toolbar-vert-offset))`}hide(){$i(this,Hs).remove()}}function dr(t,e,n){for(const l of n)e.addEventListener(l,t[l].bind(t))}As=new WeakMap,Hs=new WeakMap,qs=new WeakMap,$s=new WeakSet,tr=function(){const t=ea(this,Hs,document.createElement("div"));t.className="editToolbar",t.setAttribute("role","toolbar"),t.addEventListener("contextmenu",Ws,{signal:$i(this,qs)._signal});const e=ea(this,As,document.createElement("div"));return e.className="buttons",t.append(e),na(this,$s,nr).call(this),t},er=function(t,e){let n=0,l=0;for(const i of t){const t=i.y+i.height;if(tn?(l=a,n=t):e?a>l&&(l=a):a{$i(this,qs).highlightSelection("floating_button")}),{signal:n}),$i(this,As).append(t)};class ur{constructor(){ta(this,lr,0)}get id(){return`${pa}${la(this,lr)._++}`}}lr=new WeakMap;const hr=class{constructor(){ta(this,rr),ta(this,ir,rs()),ta(this,ar,0),ta(this,sr,null)}static get _isSVGFittingCanvas(){const t='data:image/svg+xml;charset=UTF-8,',e=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),n=new Image;n.src=t;const l=n.decode().then((()=>(e.drawImage(n,0,0,1,1,0,0,1,3),0===new Uint32Array(e.getImageData(0,0,1,1).data.buffer)[0])));return Ca(this,"_isSVGFittingCanvas",l)}async getFromFile(t){const{lastModified:e,name:n,size:l,type:i}=t;return na(this,rr,or).call(this,`${e}_${n}_${l}_${i}`,t)}async getFromUrl(t){return na(this,rr,or).call(this,t,t)}async getFromBlob(t,e){const n=await e;return na(this,rr,or).call(this,t,n)}async getFromId(t){$i(this,sr)||ea(this,sr,new Map);const e=$i(this,sr).get(t);if(!e)return null;if(e.bitmap)return e.refCounter+=1,e;if(e.file)return this.getFromFile(e.file);if(e.blobPromise){const{blobPromise:t}=e;return delete e.blobPromise,this.getFromBlob(e.id,t)}return this.getFromUrl(e.url)}getFromCanvas(t,e){$i(this,sr)||ea(this,sr,new Map);let n=$i(this,sr).get(t);if(null!=n&&n.bitmap)return n.refCounter+=1,n;const l=new OffscreenCanvas(e.width,e.height);return l.getContext("2d").drawImage(e,0,0),n={bitmap:l.transferToImageBitmap(),id:`image_${$i(this,ir)}_${la(this,ar)._++}`,refCounter:1,isSvg:!1},$i(this,sr).set(t,n),$i(this,sr).set(n.id,n),n}getSvgUrl(t){const e=$i(this,sr).get(t);return null!=e&&e.isSvg?e.svgUrl:null}deleteId(t){var e;$i(this,sr)||ea(this,sr,new Map);const n=$i(this,sr).get(t);if(!n||(n.refCounter-=1,0!==n.refCounter))return;const{bitmap:l}=n;if(!n.url&&!n.file){const t=new OffscreenCanvas(l.width,l.height);t.getContext("bitmaprenderer").transferFromImageBitmap(l),n.blobPromise=t.convertToBlob()}null==(e=l.close)||e.call(l),n.bitmap=null}isValidId(t){return t.startsWith(`image_${$i(this,ir)}_`)}};ir=new WeakMap,ar=new WeakMap,sr=new WeakMap,rr=new WeakSet,or=async function(t,e){$i(this,sr)||ea(this,sr,new Map);let n=$i(this,sr).get(t);if(null===n)return null;if(null!=n&&n.bitmap)return n.refCounter+=1,n;try{let t;if(n||(n={bitmap:null,id:`image_${$i(this,ir)}_${la(this,ar)._++}`,refCounter:0,isSvg:!1}),"string"==typeof e?(n.url=e,t=await ms(e,"blob")):e instanceof File?t=n.file=e:e instanceof Blob&&(t=e),"image/svg+xml"===t.type){const e=hr._isSVGFittingCanvas,l=new FileReader,i=new Image,a=new Promise(((t,a)=>{i.onload=()=>{n.bitmap=i,n.isSvg=!0,t()},l.onload=async()=>{const t=n.svgUrl=l.result;i.src=await e?`${t}#svgView(preserveAspectRatio(none))`:t},i.onerror=l.onerror=a}));l.readAsDataURL(t),await a}else n.bitmap=await createImageBitmap(t);n.refCounter=1}catch(eG){Ga(eG),n=null}return $i(this,sr).set(t,n),n&&$i(this,sr).set(n.id,n),n};let mr=hr;var Ur,pr,Fr,br,Zr,Nr;class Rr{constructor(t=128){ta(this,Ur,[]),ta(this,pr,!1),ta(this,Fr),ta(this,br,-1),ea(this,Fr,t)}add({cmd:t,undo:e,post:n,mustExec:l,type:i=NaN,overwriteIfSameType:a=!1,keepUndo:s=!1}){if(l&&t(),$i(this,pr))return;const r={cmd:t,undo:e,post:n,type:i};if(-1===$i(this,br))return $i(this,Ur).length>0&&($i(this,Ur).length=0),ea(this,br,0),void $i(this,Ur).push(r);if(a&&$i(this,Ur)[$i(this,br)].type===i)return s&&(r.undo=$i(this,Ur)[$i(this,br)].undo),void($i(this,Ur)[$i(this,br)]=r);const o=$i(this,br)+1;o===$i(this,Fr)?$i(this,Ur).splice(0,1):(ea(this,br,o),o<$i(this,Ur).length&&$i(this,Ur).splice(o)),$i(this,Ur).push(r)}undo(){if(-1===$i(this,br))return;ea(this,pr,!0);const{undo:t,post:e}=$i(this,Ur)[$i(this,br)];t(),null==e||e(),ea(this,pr,!1),ea(this,br,$i(this,br)-1)}redo(){if($i(this,br)<$i(this,Ur).length-1){ea(this,br,$i(this,br)+1),ea(this,pr,!0);const{cmd:t,post:e}=$i(this,Ur)[$i(this,br)];t(),null==e||e(),ea(this,pr,!1)}}hasSomethingToUndo(){return-1!==$i(this,br)}hasSomethingToRedo(){return $i(this,br)<$i(this,Ur).length-1}cleanType(t){if(-1!==$i(this,br)){for(let e=$i(this,br);e>=0;e--)if($i(this,Ur)[e].type!==t)return $i(this,Ur).splice(e+1,$i(this,br)-e),void ea(this,br,e);$i(this,Ur).length=0,ea(this,br,-1)}}destroy(){ea(this,Ur,null)}}Ur=new WeakMap,pr=new WeakMap,Fr=new WeakMap,br=new WeakMap;class Sr{constructor(t){ta(this,Zr),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:e}=Aa.platform;for(const[n,l,i={}]of t)for(const t of n){const n=t.startsWith("mac+");e&&n?(this.callbacks.set(t.slice(4),{callback:l,options:i}),this.allKeys.add(t.split("+").at(-1))):!e&&!n&&(this.callbacks.set(t,{callback:l,options:i}),this.allKeys.add(t.split("+").at(-1)))}}exec(t,e){if(!this.allKeys.has(e.key))return;const n=this.callbacks.get(na(this,Zr,Nr).call(this,e));if(!n)return;const{callback:l,options:{bubbles:i=!1,args:a=[],checker:s=null}}=n;s&&!s(t,e)||(l.bind(t,...a,e)(),i||Vs(e))}}Zr=new WeakSet,Nr=function(t){t.altKey&&this.buffer.push("alt"),t.ctrlKey&&this.buffer.push("ctrl"),t.metaKey&&this.buffer.push("meta"),t.shiftKey&&this.buffer.push("shift"),this.buffer.push(t.key);const e=this.buffer.join("+");return this.buffer.length=0,e};const Wr=class t{get _colors(){const t=new Map([["CanvasText",null],["Canvas",null]]);return Es(t),Ca(this,"_colors",t)}convert(e){const n=gs(e);if(!window.matchMedia("(forced-colors: active)").matches)return n;for(const[l,i]of this._colors)if(i.every(((t,e)=>t===n[e])))return t._colorsMapping.get(l);return n}getHexCode(t){const e=this._colors.get(t);return e?ns.makeHexColor(...e):t}};Hi(Wr,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let Vr=Wr;var Qr,yr,Tr,Mr,gr,Er,Gr,Br,Jr,kr,Yr,Cr,Xr,Ir,Dr,fr,Lr,wr,xr,zr,vr,Or,_r,jr,Kr,Pr,Ar,Hr,qr,$r,to,eo,no,lo,io,ao,so,ro,oo,co,uo,ho,mo,Uo,po,Fo,bo,Zo,No,Ro,So,Wo,Vo,Qo,yo,To,Mo,go,Eo,Go,Bo,Jo,ko,Yo,Co;let Xo=(mo=class{constructor(t,e,n,l,i,a,s,r,o,c,d,u,h){ta(this,Uo),ta(this,Qr,new AbortController),ta(this,yr,null),ta(this,Tr,new Map),ta(this,Mr,new Map),ta(this,gr,null),ta(this,Er,null),ta(this,Gr,null),ta(this,Br,new Rr),ta(this,Jr,null),ta(this,kr,null),ta(this,Yr,0),ta(this,Cr,new Set),ta(this,Xr,null),ta(this,Ir,null),ta(this,Dr,new Set),Hi(this,"_editorUndoBar",null),ta(this,fr,!1),ta(this,Lr,!1),ta(this,wr,!1),ta(this,xr,null),ta(this,zr,null),ta(this,vr,null),ta(this,Or,null),ta(this,_r,!1),ta(this,jr,null),ta(this,Kr,new ur),ta(this,Pr,!1),ta(this,Ar,!1),ta(this,Hr,null),ta(this,qr,null),ta(this,$r,null),ta(this,to,null),ta(this,eo,Fa.NONE),ta(this,no,new Set),ta(this,lo,null),ta(this,io,null),ta(this,ao,null),ta(this,so,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),ta(this,ro,[0,0]),ta(this,oo,null),ta(this,co,null),ta(this,uo,null),ta(this,ho,null);const m=this._signal=$i(this,Qr).signal;ea(this,co,t),ea(this,uo,e),ea(this,gr,n),this._eventBus=l,l._on("editingaction",this.onEditingAction.bind(this),{signal:m}),l._on("pagechanging",this.onPageChanging.bind(this),{signal:m}),l._on("scalechanging",this.onScaleChanging.bind(this),{signal:m}),l._on("rotationchanging",this.onRotationChanging.bind(this),{signal:m}),l._on("setpreference",this.onSetPreference.bind(this),{signal:m}),l._on("switchannotationeditorparams",(t=>this.updateParams(t.type,t.value)),{signal:m}),na(this,Uo,Ro).call(this),na(this,Uo,Mo).call(this),na(this,Uo,Vo).call(this),ea(this,Er,i.annotationStorage),ea(this,xr,i.filterFactory),ea(this,io,a),ea(this,Or,s||null),ea(this,fr,r),ea(this,Lr,o),ea(this,wr,c),ea(this,to,d||null),this.viewParameters={realScale:hs.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=u||null,this._supportsPinchToZoom=!1!==h}static get _keyboardManager(){const t=mo.prototype,e=t=>$i(t,co).contains(document.activeElement)&&"BUTTON"!==document.activeElement.tagName&&t.hasSomethingToControl(),n=(t,{target:e})=>{if(e instanceof HTMLInputElement){const{type:t}=e;return"text"!==t&&"number"!==t}return!0},l=this.TRANSLATE_SMALL,i=this.TRANSLATE_BIG;return Ca(this,"_keyboardManager",new Sr([[["ctrl+a","mac+meta+a"],t.selectAll,{checker:n}],[["ctrl+z","mac+meta+z"],t.undo,{checker:n}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo,{checker:n}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete,{checker:n}],[["Enter","mac+Enter"],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&$i(t,co).contains(e)&&!t.isEnterHandled}],[[" ","mac+ "],t.addNewEditorFromKeyboard,{checker:(t,{target:e})=>!(e instanceof HTMLButtonElement)&&$i(t,co).contains(document.activeElement)}],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-l,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-i,0],checker:e}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[l,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[i,0],checker:e}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-l],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-i],checker:e}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,l],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,i],checker:e}]]))}destroy(){var t,e,n,l,i;null==(t=$i(this,ho))||t.resolve(),ea(this,ho,null),null==(e=$i(this,Qr))||e.abort(),ea(this,Qr,null),this._signal=null;for(const a of $i(this,Mr).values())a.destroy();$i(this,Mr).clear(),$i(this,Tr).clear(),$i(this,Dr).clear(),ea(this,yr,null),$i(this,no).clear(),$i(this,Br).destroy(),null==(n=$i(this,gr))||n.destroy(),null==(l=$i(this,jr))||l.hide(),ea(this,jr,null),$i(this,zr)&&(clearTimeout($i(this,zr)),ea(this,zr,null)),$i(this,oo)&&(clearTimeout($i(this,oo)),ea(this,oo,null)),null==(i=this._editorUndoBar)||i.destroy()}combinedSignal(t){return AbortSignal.any([this._signal,t.signal])}get mlManager(){return $i(this,to)}get useNewAltTextFlow(){return $i(this,Lr)}get useNewAltTextWhenAddingImage(){return $i(this,wr)}get hcmFilter(){return Ca(this,"hcmFilter",$i(this,io)?$i(this,xr).addHCMFilter($i(this,io).foreground,$i(this,io).background):"none")}get direction(){return Ca(this,"direction",getComputedStyle($i(this,co)).direction)}get highlightColors(){return Ca(this,"highlightColors",$i(this,Or)?new Map($i(this,Or).split(",").map((t=>t.split("=").map((t=>t.trim()))))):null)}get highlightColorNames(){return Ca(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,(t=>t.reverse()))):null)}setCurrentDrawingSession(t){t?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),ea(this,kr,t)}setMainHighlightColorPicker(t){ea(this,$r,t)}editAltText(t,e=!1){var n;null==(n=$i(this,gr))||n.editAltText(this,t,e)}switchToMode(t,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:t})}setPreference(t,e){this._eventBus.dispatch("setpreference",{source:this,name:t,value:e})}onSetPreference({name:t,value:e}){switch(t){case"enableNewAltTextWhenAddingImage":ea(this,wr,e);break}}onPageChanging({pageNumber:t}){ea(this,Yr,t-1)}focusMainContainer(){$i(this,co).focus()}findParent(t,e){for(const n of $i(this,Mr).values()){const{x:l,y:i,width:a,height:s}=n.div.getBoundingClientRect();if(t>=l&&t<=l+a&&e>=i&&e<=i+s)return n}return null}disableUserSelect(t=!1){$i(this,uo).classList.toggle("noUserSelect",t)}addShouldRescale(t){$i(this,Dr).add(t)}removeShouldRescale(t){$i(this,Dr).delete(t)}onScaleChanging({scale:t}){var e;this.commitOrRemove(),this.viewParameters.realScale=t*hs.PDF_TO_CSS_UNITS;for(const n of $i(this,Dr))n.onScaleChanging();null==(e=$i(this,kr))||e.onScaleChanging()}onRotationChanging({pagesRotation:t}){this.commitOrRemove(),this.viewParameters.rotation=t}highlightSelection(t=""){const e=document.getSelection();if(!e||e.isCollapsed)return;const{anchorNode:n,anchorOffset:l,focusNode:i,focusOffset:a}=e,s=e.toString(),r=na(this,Uo,po).call(this,e).closest(".textLayer"),o=this.getSelectionBoxes(r);if(!o)return;e.empty();const c=na(this,Uo,Fo).call(this,r),d=$i(this,eo)===Fa.NONE,u=()=>{null==c||c.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:t,boxes:o,anchorNode:n,anchorOffset:l,focusNode:i,focusOffset:a,text:s}),d&&this.showAllEditors("highlight",!0,!0)};d?this.switchToMode(Fa.HIGHLIGHT,u):u()}addToAnnotationStorage(t){!t.isEmpty()&&$i(this,Er)&&!$i(this,Er).has(t.id)&&$i(this,Er).setValue(t.id,t)}blur(){if(this.isShiftKeyDown=!1,$i(this,_r)&&(ea(this,_r,!1),na(this,Uo,No).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:t}=document;for(const e of $i(this,no))if(e.div.contains(t)){ea(this,qr,[e,t]),e._focusEventsAllowed=!1;break}}focus(){if(!$i(this,qr))return;const[t,e]=$i(this,qr);ea(this,qr,null),e.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0,signal:this._signal}),e.focus()}addEditListeners(){na(this,Uo,Vo).call(this),na(this,Uo,yo).call(this)}removeEditListeners(){na(this,Uo,Qo).call(this),na(this,Uo,To).call(this)}dragOver(t){for(const{type:e}of t.dataTransfer.items)for(const n of $i(this,Ir))if(n.isHandlingMimeForPasting(e))return t.dataTransfer.dropEffect="copy",void t.preventDefault()}drop(t){for(const e of t.dataTransfer.items)for(const n of $i(this,Ir))if(n.isHandlingMimeForPasting(e.type))return n.paste(e,this.currentLayer),void t.preventDefault()}copy(t){var e;if(t.preventDefault(),null==(e=$i(this,yr))||e.commitOrRemove(),!this.hasSelection)return;const n=[];for(const l of $i(this,no)){const t=l.serialize(!0);t&&n.push(t)}0!==n.length&&t.clipboardData.setData("application/pdfjs",JSON.stringify(n))}cut(t){this.copy(t),this.delete()}async paste(t){t.preventDefault();const{clipboardData:e}=t;for(const a of e.items)for(const t of $i(this,Ir))if(t.isHandlingMimeForPasting(a.type))return void t.paste(a,this.currentLayer);let n=e.getData("application/pdfjs");if(!n)return;try{n=JSON.parse(n)}catch(i){return void Ga(`paste: "${i.message}".`)}if(!Array.isArray(n))return;this.unselectAll();const l=this.currentLayer;try{const t=[];for(const a of n){const e=await l.deserialize(a);if(!e)return;t.push(e)}const e=()=>{for(const e of t)na(this,Uo,Jo).call(this,e);na(this,Uo,Co).call(this,t)},i=()=>{for(const e of t)e.remove()};this.addCommands({cmd:e,undo:i,mustExec:!0})}catch(i){Ga(`paste: "${i.message}".`)}}keydown(t){!this.isShiftKeyDown&&"Shift"===t.key&&(this.isShiftKeyDown=!0),$i(this,eo)!==Fa.NONE&&!this.isEditorHandlingKeyboard&&mo._keyboardManager.exec(this,t)}keyup(t){this.isShiftKeyDown&&"Shift"===t.key&&(this.isShiftKeyDown=!1,$i(this,_r)&&(ea(this,_r,!1),na(this,Uo,No).call(this,"main_toolbar")))}onEditingAction({name:t}){switch(t){case"undo":case"redo":case"delete":case"selectAll":this[t]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(t){t?(na(this,Uo,So).call(this),na(this,Uo,yo).call(this),na(this,Uo,go).call(this,{isEditing:$i(this,eo)!==Fa.NONE,isEmpty:na(this,Uo,Yo).call(this),hasSomethingToUndo:$i(this,Br).hasSomethingToUndo(),hasSomethingToRedo:$i(this,Br).hasSomethingToRedo(),hasSelectedEditor:!1})):(na(this,Uo,Wo).call(this),na(this,Uo,To).call(this),na(this,Uo,go).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(t){if(!$i(this,Ir)){ea(this,Ir,t);for(const t of $i(this,Ir))na(this,Uo,Eo).call(this,t.defaultPropertiesToUpdate)}}getId(){return $i(this,Kr).id}get currentLayer(){return $i(this,Mr).get($i(this,Yr))}getLayer(t){return $i(this,Mr).get(t)}get currentPageIndex(){return $i(this,Yr)}addLayer(t){$i(this,Mr).set(t.pageIndex,t),$i(this,Pr)?t.enable():t.disable()}removeLayer(t){$i(this,Mr).delete(t.pageIndex)}async updateMode(t,e=null,n=!1){var l;if($i(this,eo)!==t&&(!$i(this,ho)||(await $i(this,ho).promise,$i(this,ho)))){if(ea(this,ho,Promise.withResolvers()),ea(this,eo,t),t===Fa.NONE)return this.setEditingState(!1),na(this,Uo,Bo).call(this),null==(l=this._editorUndoBar)||l.hide(),void $i(this,ho).resolve();this.setEditingState(!0),await na(this,Uo,Go).call(this),this.unselectAll();for(const e of $i(this,Mr).values())e.updateMode(t);if(!e)return n&&this.addNewEditorFromKeyboard(),void $i(this,ho).resolve();for(const t of $i(this,Tr).values())t.annotationElementId===e?(this.setSelected(t),t.enterInEditMode()):t.unselect();$i(this,ho).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(t){t!==$i(this,eo)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:t})}updateParams(t,e){var n;if($i(this,Ir)){switch(t){case ba.CREATE:return void this.currentLayer.addNewEditor();case ba.HIGHLIGHT_DEFAULT_COLOR:null==(n=$i(this,$r))||n.updateColor(e);break;case ba.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),($i(this,ao)||ea(this,ao,new Map)).set(t,e),this.showAllEditors("highlight",e);break}for(const n of $i(this,no))n.updateParams(t,e);for(const n of $i(this,Ir))n.updateDefaultParams(t,e)}}showAllEditors(t,e,n=!1){var l;for(const i of $i(this,Tr).values())i.editorType===t&&i.show(e);((null==(l=$i(this,ao))?void 0:l.get(ba.HIGHLIGHT_SHOW_ALL))??!0)!==e&&na(this,Uo,Eo).call(this,[[ba.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(t=!1){if($i(this,Ar)!==t){ea(this,Ar,t);for(const e of $i(this,Mr).values())t?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",t)}}getEditors(t){const e=[];for(const n of $i(this,Tr).values())n.pageIndex===t&&e.push(n);return e}getEditor(t){return $i(this,Tr).get(t)}addEditor(t){$i(this,Tr).set(t.id,t)}removeEditor(t){var e;t.div.contains(document.activeElement)&&($i(this,zr)&&clearTimeout($i(this,zr)),ea(this,zr,setTimeout((()=>{this.focusMainContainer(),ea(this,zr,null)}),0))),$i(this,Tr).delete(t.id),this.unselect(t),(!t.annotationElementId||!$i(this,Cr).has(t.annotationElementId))&&(null==(e=$i(this,Er))||e.remove(t.id))}addDeletedAnnotationElement(t){$i(this,Cr).add(t.annotationElementId),this.addChangedExistingAnnotation(t),t.deleted=!0}isDeletedAnnotationElement(t){return $i(this,Cr).has(t)}removeDeletedAnnotationElement(t){$i(this,Cr).delete(t.annotationElementId),this.removeChangedExistingAnnotation(t),t.deleted=!1}setActiveEditor(t){$i(this,yr)!==t&&(ea(this,yr,t),t&&na(this,Uo,Eo).call(this,t.propertiesToUpdate))}updateUI(t){$i(this,Uo,ko)===t&&na(this,Uo,Eo).call(this,t.propertiesToUpdate)}updateUIForDefaultProperties(t){na(this,Uo,Eo).call(this,t.defaultPropertiesToUpdate)}toggleSelected(t){if($i(this,no).has(t))return $i(this,no).delete(t),t.unselect(),void na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection});$i(this,no).add(t),t.select(),na(this,Uo,Eo).call(this,t.propertiesToUpdate),na(this,Uo,go).call(this,{hasSelectedEditor:!0})}setSelected(t){var e;null==(e=$i(this,kr))||e.commitOrRemove();for(const n of $i(this,no))n!==t&&n.unselect();$i(this,no).clear(),$i(this,no).add(t),t.select(),na(this,Uo,Eo).call(this,t.propertiesToUpdate),na(this,Uo,go).call(this,{hasSelectedEditor:!0})}isSelected(t){return $i(this,no).has(t)}get firstSelectedEditor(){return $i(this,no).values().next().value}unselect(t){t.unselect(),$i(this,no).delete(t),na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==$i(this,no).size}get isEnterHandled(){return 1===$i(this,no).size&&this.firstSelectedEditor.isEnterHandled}undo(){var t;$i(this,Br).undo(),na(this,Uo,go).call(this,{hasSomethingToUndo:$i(this,Br).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:na(this,Uo,Yo).call(this)}),null==(t=this._editorUndoBar)||t.hide()}redo(){$i(this,Br).redo(),na(this,Uo,go).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:$i(this,Br).hasSomethingToRedo(),isEmpty:na(this,Uo,Yo).call(this)})}addCommands(t){$i(this,Br).add(t),na(this,Uo,go).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:na(this,Uo,Yo).call(this)})}cleanUndoStack(t){$i(this,Br).cleanType(t)}delete(){var t;this.commitOrRemove();const e=null==(t=this.currentLayer)?void 0:t.endDrawingSession(!0);if(!this.hasSelection&&!e)return;const n=e?[e]:[...$i(this,no)],l=()=>{var t;null==(t=this._editorUndoBar)||t.show(i,1===n.length?n[0].editorType:n.length);for(const e of n)e.remove()},i=()=>{for(const t of n)na(this,Uo,Jo).call(this,t)};this.addCommands({cmd:l,undo:i,mustExec:!0})}commitOrRemove(){var t;null==(t=$i(this,yr))||t.commitOrRemove()}hasSomethingToControl(){return $i(this,yr)||this.hasSelection}selectAll(){for(const t of $i(this,no))t.commit();na(this,Uo,Co).call(this,$i(this,Tr).values())}unselectAll(){var t;if((!$i(this,yr)||($i(this,yr).commitOrRemove(),$i(this,eo)===Fa.NONE))&&(null==(t=$i(this,kr))||!t.commitOrRemove())&&this.hasSelection){for(const t of $i(this,no))t.unselect();$i(this,no).clear(),na(this,Uo,go).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(t,e,n=!1){if(n||this.commitOrRemove(),!this.hasSelection)return;$i(this,ro)[0]+=t,$i(this,ro)[1]+=e;const[l,i]=$i(this,ro),a=[...$i(this,no)],s=1e3;$i(this,oo)&&clearTimeout($i(this,oo)),ea(this,oo,setTimeout((()=>{ea(this,oo,null),$i(this,ro)[0]=$i(this,ro)[1]=0,this.addCommands({cmd:()=>{for(const t of a)$i(this,Tr).has(t.id)&&t.translateInPage(l,i)},undo:()=>{for(const t of a)$i(this,Tr).has(t.id)&&t.translateInPage(-l,-i)},mustExec:!1})}),s));for(const r of a)r.translateInPage(t,e)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),ea(this,Xr,new Map);for(const t of $i(this,no))$i(this,Xr).set(t,{savedX:t.x,savedY:t.y,savedPageIndex:t.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!$i(this,Xr))return!1;this.disableUserSelect(!1);const t=$i(this,Xr);ea(this,Xr,null);let e=!1;for(const[{x:l,y:i,pageIndex:a},s]of t)s.newX=l,s.newY=i,s.newPageIndex=a,e||(e=l!==s.savedX||i!==s.savedY||a!==s.savedPageIndex);if(!e)return!1;const n=(t,e,n,l)=>{if($i(this,Tr).has(t.id)){const i=$i(this,Mr).get(l);i?t._setParentAndPosition(i,e,n):(t.pageIndex=l,t.x=e,t.y=n)}};return this.addCommands({cmd:()=>{for(const[e,{newX:l,newY:i,newPageIndex:a}]of t)n(e,l,i,a)},undo:()=>{for(const[e,{savedX:l,savedY:i,savedPageIndex:a}]of t)n(e,l,i,a)},mustExec:!0}),!0}dragSelectedEditors(t,e){if($i(this,Xr))for(const n of $i(this,Xr).keys())n.drag(t,e)}rebuild(t){if(null===t.parent){const e=this.getLayer(t.pageIndex);e?(e.changeParent(t),e.addOrRebuild(t)):(this.addEditor(t),this.addToAnnotationStorage(t),t.rebuild())}else t.parent.addOrRebuild(t)}get isEditorHandlingKeyboard(){var t;return(null==(t=this.getActive())?void 0:t.shouldGetKeyboardEvents())||1===$i(this,no).size&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(t){return $i(this,yr)===t}getActive(){return $i(this,yr)}getMode(){return $i(this,eo)}get imageManager(){return Ca(this,"imageManager",new mr)}getSelectionBoxes(t){if(!t)return null;const e=document.getSelection();for(let o=0,c=e.rangeCount;o({x:(e-l)/a,y:1-(t+s-n)/i,width:r/a,height:s/i});break;case"180":s=(t,e,s,r)=>({x:1-(t+s-n)/i,y:1-(e+r-l)/a,width:s/i,height:r/a});break;case"270":s=(t,e,s,r)=>({x:1-(e+r-l)/a,y:(t-n)/i,width:r/a,height:s/i});break;default:s=(t,e,s,r)=>({x:(t-n)/i,y:(e-l)/a,width:s/i,height:r/a});break}const r=[];for(let o=0,c=e.rangeCount;o{"pointerup"===n.type&&0!==n.button||(e.abort(),null==t||t.toggleDrawing(!0),"pointerup"===n.type&&na(this,Uo,No).call(this,"main_toolbar"))};window.addEventListener("pointerup",l,{signal:n}),window.addEventListener("blur",l,{signal:n})}}else $i(this,lo)&&(null==(e=$i(this,jr))||e.hide(),ea(this,lo,null),na(this,Uo,go).call(this,{hasSelectedText:!1}))},No=function(t=""){$i(this,eo)===Fa.HIGHLIGHT?this.highlightSelection(t):$i(this,fr)&&na(this,Uo,bo).call(this)},Ro=function(){document.addEventListener("selectionchange",na(this,Uo,Zo).bind(this),{signal:this._signal})},So=function(){if($i(this,vr))return;ea(this,vr,new AbortController);const t=this.combinedSignal($i(this,vr));window.addEventListener("focus",this.focus.bind(this),{signal:t}),window.addEventListener("blur",this.blur.bind(this),{signal:t})},Wo=function(){var t;null==(t=$i(this,vr))||t.abort(),ea(this,vr,null)},Vo=function(){if($i(this,Hr))return;ea(this,Hr,new AbortController);const t=this.combinedSignal($i(this,Hr));window.addEventListener("keydown",this.keydown.bind(this),{signal:t}),window.addEventListener("keyup",this.keyup.bind(this),{signal:t})},Qo=function(){var t;null==(t=$i(this,Hr))||t.abort(),ea(this,Hr,null)},yo=function(){if($i(this,Jr))return;ea(this,Jr,new AbortController);const t=this.combinedSignal($i(this,Jr));document.addEventListener("copy",this.copy.bind(this),{signal:t}),document.addEventListener("cut",this.cut.bind(this),{signal:t}),document.addEventListener("paste",this.paste.bind(this),{signal:t})},To=function(){var t;null==(t=$i(this,Jr))||t.abort(),ea(this,Jr,null)},Mo=function(){const t=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:t}),document.addEventListener("drop",this.drop.bind(this),{signal:t})},go=function(t){Object.entries(t).some((([t,e])=>$i(this,so)[t]!==e))&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign($i(this,so),t)}),$i(this,eo)===Fa.HIGHLIGHT&&!1===t.hasSelectedEditor&&na(this,Uo,Eo).call(this,[[ba.HIGHLIGHT_FREE,!0]]))},Eo=function(t){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:t})},Go=async function(){if(!$i(this,Pr)){ea(this,Pr,!0);const t=[];for(const e of $i(this,Mr).values())t.push(e.enable());await Promise.all(t);for(const e of $i(this,Tr).values())e.enable()}},Bo=function(){if(this.unselectAll(),$i(this,Pr)){ea(this,Pr,!1);for(const t of $i(this,Mr).values())t.disable();for(const t of $i(this,Tr).values())t.disable()}},Jo=function(t){const e=$i(this,Mr).get(t.pageIndex);e?e.addOrRebuild(t):(this.addEditor(t),this.addToAnnotationStorage(t))},ko=function(){let t=null;for(t of $i(this,no));return t},Yo=function(){if(0===$i(this,Tr).size)return!0;if(1===$i(this,Tr).size)for(const t of $i(this,Tr).values())return t.isEmpty();return!1},Co=function(t){for(const e of $i(this,no))e.unselect();$i(this,no).clear();for(const e of t)e.isEmpty()||($i(this,no).add(e),e.select());na(this,Uo,go).call(this,{hasSelectedEditor:this.hasSelection})},Hi(mo,"TRANSLATE_SMALL",1),Hi(mo,"TRANSLATE_BIG",10),mo);var Io,Do,fo,Lo,wo,xo,zo,vo,Oo,_o,jo,Ko,Po,Ao,Ho,qo;const $o=class t{constructor(e){ta(this,Ao),ta(this,Io,null),ta(this,Do,!1),ta(this,fo,null),ta(this,Lo,null),ta(this,wo,null),ta(this,xo,null),ta(this,zo,!1),ta(this,vo,null),ta(this,Oo,null),ta(this,_o,null),ta(this,jo,null),ta(this,Ko,!1),ea(this,Oo,e),ea(this,Ko,e._uiManager.useNewAltTextFlow),$i(t,Po)||ea(t,Po,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(e){t._l10n??(t._l10n=e)}async render(){const e=ea(this,fo,document.createElement("button"));e.className="altText",e.tabIndex="0";const n=ea(this,Lo,document.createElement("span"));e.append(n),$i(this,Ko)?(e.classList.add("new"),e.setAttribute("data-l10n-id",$i(t,Po).missing),n.setAttribute("data-l10n-id",$i(t,Po)["missing-label"])):(e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),n.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const l=$i(this,Oo)._uiManager._signal;e.addEventListener("contextmenu",Ws,{signal:l}),e.addEventListener("pointerdown",(t=>t.stopPropagation()),{signal:l});const i=t=>{t.preventDefault(),$i(this,Oo)._uiManager.editAltText($i(this,Oo)),$i(this,Ko)&&$i(this,Oo)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:$i(this,Ao,Ho)}})};return e.addEventListener("click",i,{capture:!0,signal:l}),e.addEventListener("keydown",(t=>{t.target===e&&"Enter"===t.key&&(ea(this,zo,!0),i(t))}),{signal:l}),await na(this,Ao,qo).call(this),e}finish(){$i(this,fo)&&($i(this,fo).focus({focusVisible:$i(this,zo)}),ea(this,zo,!1))}isEmpty(){return $i(this,Ko)?null===$i(this,Io):!$i(this,Io)&&!$i(this,Do)}hasData(){return $i(this,Ko)?null!==$i(this,Io)||!!$i(this,_o):this.isEmpty()}get guessedText(){return $i(this,_o)}async setGuessedText(e){null===$i(this,Io)&&(ea(this,_o,e),ea(this,jo,await t._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:e})),na(this,Ao,qo).call(this))}toggleAltTextBadge(t=!1){var e;if(!$i(this,Ko)||$i(this,Io))return null==(e=$i(this,vo))||e.remove(),void ea(this,vo,null);if(!$i(this,vo)){const t=ea(this,vo,document.createElement("div"));t.className="noAltTextBadge",$i(this,Oo).div.append(t)}$i(this,vo).classList.toggle("hidden",!t)}serialize(t){let e=$i(this,Io);return!t&&$i(this,_o)===e&&(e=$i(this,jo)),{altText:e,decorative:$i(this,Do),guessedText:$i(this,_o),textWithDisclaimer:$i(this,jo)}}get data(){return{altText:$i(this,Io),decorative:$i(this,Do)}}set data({altText:t,decorative:e,guessedText:n,textWithDisclaimer:l,cancel:i=!1}){n&&(ea(this,_o,n),ea(this,jo,l)),($i(this,Io)!==t||$i(this,Do)!==e)&&(i||(ea(this,Io,t),ea(this,Do,e)),na(this,Ao,qo).call(this))}toggle(t=!1){$i(this,fo)&&(!t&&$i(this,xo)&&(clearTimeout($i(this,xo)),ea(this,xo,null)),$i(this,fo).disabled=!t)}shown(){$i(this,Oo)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:$i(this,Ao,Ho)}})}destroy(){var t,e;null==(t=$i(this,fo))||t.remove(),ea(this,fo,null),ea(this,Lo,null),ea(this,wo,null),null==(e=$i(this,vo))||e.remove(),ea(this,vo,null)}};Io=new WeakMap,Do=new WeakMap,fo=new WeakMap,Lo=new WeakMap,wo=new WeakMap,xo=new WeakMap,zo=new WeakMap,vo=new WeakMap,Oo=new WeakMap,_o=new WeakMap,jo=new WeakMap,Ko=new WeakMap,Po=new WeakMap,Ao=new WeakSet,Ho=function(){return($i(this,Io)?"added":null===$i(this,Io)&&this.guessedText&&"review")||"missing"},qo=async function(){var t,e,n;const l=$i(this,fo);if(!l)return;if($i(this,Ko)){if(l.classList.toggle("done",!!$i(this,Io)),l.setAttribute("data-l10n-id",$i($o,Po)[$i(this,Ao,Ho)]),null==(t=$i(this,Lo))||t.setAttribute("data-l10n-id",$i($o,Po)[`${$i(this,Ao,Ho)}-label`]),!$i(this,Io))return void(null==(e=$i(this,wo))||e.remove())}else{if(!$i(this,Io)&&!$i(this,Do))return l.classList.remove("done"),void(null==(n=$i(this,wo))||n.remove());l.classList.add("done"),l.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let i=$i(this,wo);if(!i){ea(this,wo,i=document.createElement("span")),i.className="tooltip",i.setAttribute("role","tooltip"),i.id=`alt-text-tooltip-${$i(this,Oo).id}`;const t=100,e=$i(this,Oo)._uiManager._signal;e.addEventListener("abort",(()=>{clearTimeout($i(this,xo)),ea(this,xo,null)}),{once:!0}),l.addEventListener("mouseenter",(()=>{ea(this,xo,setTimeout((()=>{ea(this,xo,null),$i(this,wo).classList.add("show"),$i(this,Oo)._reportTelemetry({action:"alt_text_tooltip"})}),t))}),{signal:e}),l.addEventListener("mouseleave",(()=>{var t;$i(this,xo)&&(clearTimeout($i(this,xo)),ea(this,xo,null)),null==(t=$i(this,wo))||t.classList.remove("show")}),{signal:e})}$i(this,Do)?i.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(i.removeAttribute("data-l10n-id"),i.textContent=$i(this,Io)),i.parentNode||l.append(i);const a=$i(this,Oo).getImageForAltText();null==a||a.setAttribute("aria-describedby",i.id)},ta($o,Po,null),Hi($o,"_l10n",null);let tc=$o;var ec,nc,lc,ic,ac,sc,rc,oc,cc,dc,uc,hc,mc,Uc,pc,Fc;let bc=(Fc=class{constructor({container:t,isPinchingDisabled:e=null,isPinchingStopped:n=null,onPinchStart:l=null,onPinching:i=null,onPinchEnd:a=null,signal:s}){ta(this,hc),ta(this,ec),ta(this,nc,!1),ta(this,lc,null),ta(this,ic),ta(this,ac),ta(this,sc),ta(this,rc),ta(this,oc),ta(this,cc,null),ta(this,dc),ta(this,uc,null),ea(this,ec,t),ea(this,lc,n),ea(this,ic,e),ea(this,ac,l),ea(this,sc,i),ea(this,rc,a),ea(this,dc,new AbortController),ea(this,oc,AbortSignal.any([s,$i(this,dc).signal])),t.addEventListener("touchstart",na(this,hc,mc).bind(this),{passive:!1,signal:$i(this,oc)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return Ca(this,"MIN_TOUCH_DISTANCE_TO_PINCH",35/(window.devicePixelRatio||1))}destroy(){var t;null==(t=$i(this,dc))||t.abort(),ea(this,dc,null)}},ec=new WeakMap,nc=new WeakMap,lc=new WeakMap,ic=new WeakMap,ac=new WeakMap,sc=new WeakMap,rc=new WeakMap,oc=new WeakMap,cc=new WeakMap,dc=new WeakMap,uc=new WeakMap,hc=new WeakSet,mc=function(t){var e,n,l;if(null!=(e=$i(this,ic))&&e.call(this)||t.touches.length<2)return;if(!$i(this,uc)){ea(this,uc,new AbortController);const t=AbortSignal.any([$i(this,oc),$i(this,uc).signal]),e=$i(this,ec),l={signal:t,passive:!1};e.addEventListener("touchmove",na(this,hc,Uc).bind(this),l),e.addEventListener("touchend",na(this,hc,pc).bind(this),l),e.addEventListener("touchcancel",na(this,hc,pc).bind(this),l),null==(n=$i(this,ac))||n.call(this)}if(Vs(t),2!==t.touches.length||null!=(l=$i(this,lc))&&l.call(this))return void ea(this,cc,null);let[i,a]=t.touches;i.identifier>a.identifier&&([i,a]=[a,i]),ea(this,cc,{touch0X:i.screenX,touch0Y:i.screenY,touch1X:a.screenX,touch1Y:a.screenY})},Uc=function(t){var e;if(!$i(this,cc)||2!==t.touches.length)return;let[n,l]=t.touches;n.identifier>l.identifier&&([n,l]=[l,n]);const{screenX:i,screenY:a}=n,{screenX:s,screenY:r}=l,o=$i(this,cc),{touch0X:c,touch0Y:d,touch1X:u,touch1Y:h}=o,m=u-c,U=h-d,p=s-i,F=r-a,b=Math.hypot(p,F)||1,Z=Math.hypot(m,U)||1;if(!$i(this,nc)&&Math.abs(Z-b)<=Fc.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(o.touch0X=i,o.touch0Y=a,o.touch1X=s,o.touch1Y=r,t.preventDefault(),!$i(this,nc))return void ea(this,nc,!0);const N=[(i+s)/2,(a+r)/2];null==(e=$i(this,sc))||e.call(this,N,Z,b)},pc=function(t){var e;$i(this,uc).abort(),ea(this,uc,null),null==(e=$i(this,rc))||e.call(this),$i(this,cc)&&(t.preventDefault(),ea(this,cc,null),ea(this,nc,!1))},Fc);var Zc,Nc,Rc,Sc,Wc,Vc,Qc,yc,Tc,Mc,gc,Ec,Gc,Bc,Jc,kc,Yc,Cc,Xc,Ic,Dc,fc,Lc,wc,xc,zc,vc,Oc,_c,jc,Kc,Pc,Ac,Hc,qc,$c,td,ed,nd,ld,id,ad,sd,rd,od;const cd=class t{constructor(e){ta(this,xc),ta(this,Zc,null),ta(this,Nc,null),ta(this,Rc,null),ta(this,Sc,!1),ta(this,Wc,null),ta(this,Vc,""),ta(this,Qc,!1),ta(this,yc,null),ta(this,Tc,null),ta(this,Mc,null),ta(this,gc,null),ta(this,Ec,""),ta(this,Gc,!1),ta(this,Bc,null),ta(this,Jc,!1),ta(this,kc,!1),ta(this,Yc,!1),ta(this,Cc,null),ta(this,Xc,0),ta(this,Ic,0),ta(this,Dc,null),ta(this,fc,null),Hi(this,"_editToolbar",null),Hi(this,"_initialOptions",Object.create(null)),Hi(this,"_initialData",null),Hi(this,"_isVisible",!0),Hi(this,"_uiManager",null),Hi(this,"_focusEventsAllowed",!0),ta(this,Lc,!1),ta(this,wc,t._zIndex++),this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null;const{rotation:n,rawDims:{pageWidth:l,pageHeight:i,pageX:a,pageY:s}}=this.parent.viewport;this.rotation=n,this.pageRotation=(360+n-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[l,i],this.pageTranslation=[a,s];const[r,o]=this.parentDimensions;this.x=e.x/r,this.y=e.y/o,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const e=t.prototype._resizeWithKeyboard,n=Xo.TRANSLATE_SMALL,l=Xo.TRANSLATE_BIG;return Ca(this,"_resizerKeyboardManager",new Sr([[["ArrowLeft","mac+ArrowLeft"],e,{args:[-n,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e,{args:[-l,0]}],[["ArrowRight","mac+ArrowRight"],e,{args:[n,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e,{args:[l,0]}],[["ArrowUp","mac+ArrowUp"],e,{args:[0,-n]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e,{args:[0,-l]}],[["ArrowDown","mac+ArrowDown"],e,{args:[0,n]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e,{args:[0,l]}],[["Escape","mac+Escape"],t.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get isDrawer(){return!1}static get _defaultLineColor(){return Ca(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new ud({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId,e.deleted=!0,e._uiManager.addToAnnotationStorage(e)}static initialize(e,n){if(t._l10n??(t._l10n=e),t._l10nResizer||(t._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),-1!==t._borderLineWidth)return;const l=getComputedStyle(document.documentElement);t._borderLineWidth=parseFloat(l.getPropertyValue("--outline-width"))||0}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(t){return!1}static paste(t,e){Ba("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return $i(this,Lc)}set _isDraggable(t){var e;ea(this,Lc,t),null==(e=this.div)||e.classList.toggle("draggable",t)}get isEnterHandled(){return!0}center(){const[t,e]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*e/(2*t),this.y+=this.width*t/(2*e);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*e/(2*t),this.y-=this.width*t/(2*e);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=$i(this,wc)}setParent(t){null!==t?(this.pageIndex=t.pageIndex,this.pageDimensions=t.pageDimensions):na(this,xc,od).call(this),this.parent=t}focusin(t){this._focusEventsAllowed&&($i(this,Gc)?ea(this,Gc,!1):this.parent.setSelected(this))}focusout(t){var e;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const n=t.relatedTarget;null!=n&&n.closest(`#${this.id}`)||(t.preventDefault(),null!=(e=this.parent)&&e.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(t,e,n,l){const[i,a]=this.parentDimensions;[n,l]=this.screenToPageTranslation(n,l),this.x=(t+n)/i,this.y=(e+l)/a,this.fixAndSetPosition()}translate(t,e){na(this,xc,zc).call(this,this.parentDimensions,t,e)}translateInPage(t,e){$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]),na(this,xc,zc).call(this,this.pageDimensions,t,e),this.div.scrollIntoView({block:"nearest"})}drag(t,e){$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]);const{div:n,parentDimensions:[l,i]}=this;if(this.x+=t/l,this.y+=e/i,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:t,y:e}=this.div.getBoundingClientRect();this.parent.findNewParent(this,t,e)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:s}=this;const[r,o]=this.getBaseTranslation();a+=r,s+=o;const{style:c}=n;c.left=`${(100*a).toFixed(2)}%`,c.top=`${(100*s).toFixed(2)}%`,this._onTranslating(a,s),n.scrollIntoView({block:"nearest"})}_onTranslating(t,e){}_onTranslated(t,e){}get _hasBeenMoved(){return!!$i(this,Bc)&&($i(this,Bc)[0]!==this.x||$i(this,Bc)[1]!==this.y)}get _hasBeenResized(){return!!$i(this,Bc)&&($i(this,Bc)[2]!==this.width||$i(this,Bc)[3]!==this.height)}getBaseTranslation(){const[e,n]=this.parentDimensions,{_borderLineWidth:l}=t,i=l/e,a=l/n;switch(this.rotation){case 90:return[-i,a];case 180:return[i,a];case 270:return[i,-a];default:return[-i,-a]}}get _mustFixPosition(){return!0}fixAndSetPosition(t=this.rotation){const{div:{style:e},pageDimensions:[n,l]}=this;let{x:i,y:a,width:s,height:r}=this;if(s*=n,r*=l,i*=n,a*=l,this._mustFixPosition)switch(t){case 0:i=Math.max(0,Math.min(n-s,i)),a=Math.max(0,Math.min(l-r,a));break;case 90:i=Math.max(0,Math.min(n-r,i)),a=Math.min(l,Math.max(s,a));break;case 180:i=Math.min(n,Math.max(s,i)),a=Math.min(l,Math.max(r,a));break;case 270:i=Math.min(n,Math.max(r,i)),a=Math.max(0,Math.min(l-s,a));break}this.x=i/=n,this.y=a/=l;const[o,c]=this.getBaseTranslation();i+=o,a+=c,e.left=`${(100*i).toFixed(2)}%`,e.top=`${(100*a).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(e,n){var l;return na(l=t,vc,Oc).call(l,e,n,this.parentRotation)}pageTranslationToScreen(e,n){var l;return na(l=t,vc,Oc).call(l,e,n,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:t,pageDimensions:[e,n]}=this;return[e*t,n*t]}setDims(t,e){const[n,l]=this.parentDimensions,{style:i}=this.div;i.width=`${(100*t/n).toFixed(2)}%`,$i(this,Qc)||(i.height=`${(100*e/l).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:n}=t,l=n.endsWith("%"),i=!$i(this,Qc)&&e.endsWith("%");if(l&&i)return;const[a,s]=this.parentDimensions;l||(t.width=`${(100*parseFloat(n)/a).toFixed(2)}%`),!$i(this,Qc)&&!i&&(t.height=`${(100*parseFloat(e)/s).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}_onResized(){}static _round(t){return Math.round(1e4*t)/1e4}_onResizing(){}altTextFinish(){var t;null==(t=$i(this,Rc))||t.finish()}async addEditToolbar(){return this._editToolbar||$i(this,kc)||(this._editToolbar=new Ps(this),this.div.append(this._editToolbar.render()),$i(this,Rc)&&await this._editToolbar.addAltText($i(this,Rc))),this._editToolbar}removeEditToolbar(){var t;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,null==(t=$i(this,Rc))||t.destroy())}addContainer(t){var e;const n=null==(e=this._editToolbar)?void 0:e.div;n?n.before(t):this.div.append(t)}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){$i(this,Rc)||(tc.initialize(t._l10n),ea(this,Rc,new tc(this)),$i(this,Zc)&&($i(this,Rc).data=$i(this,Zc),ea(this,Zc,null)),await this.addEditToolbar())}get altTextData(){var t;return null==(t=$i(this,Rc))?void 0:t.data}set altTextData(t){$i(this,Rc)&&($i(this,Rc).data=t)}get guessedAltText(){var t;return null==(t=$i(this,Rc))?void 0:t.guessedText}async setGuessedAltText(t){var e;await(null==(e=$i(this,Rc))?void 0:e.setGuessedText(t))}serializeAltText(t){var e;return null==(e=$i(this,Rc))?void 0:e.serialize(t)}hasAltText(){return!!$i(this,Rc)&&!$i(this,Rc).isEmpty()}hasAltTextData(){var t;return(null==(t=$i(this,Rc))?void 0:t.hasData())??!1}render(){var t;this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=$i(this,Sc)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),na(this,xc,ld).call(this);const[e,n]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*n/e).toFixed(2)}%`,this.div.style.maxHeight=`${(100*e/n).toFixed(2)}%`);const[l,i]=this.getInitialTranslation();return this.translate(l,i),dr(this,this.div,["pointerdown"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&($i(this,fc)||ea(this,fc,new bc({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:na(this,xc,qc).bind(this),onPinching:na(this,xc,$c).bind(this),onPinchEnd:na(this,xc,td).bind(this),signal:this._uiManager._signal}))),null==(t=this._uiManager._editorUndoBar)||t.hide(),this.div}pointerdown(t){const{isMac:e}=Aa.platform;0!==t.button||t.ctrlKey&&e?t.preventDefault():(ea(this,Gc,!0),this._isDraggable?na(this,xc,nd).call(this,t):na(this,xc,ed).call(this,t))}get isSelected(){return this._uiManager.isSelected(this)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){$i(this,Cc)&&clearTimeout($i(this,Cc)),ea(this,Cc,setTimeout((()=>{var t;ea(this,Cc,null),null==(t=this.parent)||t.moveEditorInDOM(this)}),0))}_setParentAndPosition(t,e,n){t.changeParent(this),this.x=e,this.y=n,this.fixAndSetPosition(),this._onTranslated()}getRect(t,e,n=this.rotation){const l=this.parentScale,[i,a]=this.pageDimensions,[s,r]=this.pageTranslation,o=t/l,c=e/l,d=this.x*i,u=this.y*a,h=this.width*i,m=this.height*a;switch(n){case 0:return[d+o+s,a-u-c-m+r,d+o+h+s,a-u-c+r];case 90:return[d+c+s,a-u+o+r,d+c+m+s,a-u+o+h+r];case 180:return[d-o-h+s,a-u+c+r,d-o+s,a-u+c+m+r];case 270:return[d-c-m+s,a-u-o-h+r,d-c+s,a-u-o+r];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[n,l,i,a]=t,s=i-n,r=a-l;switch(this.rotation){case 0:return[n,e-a,s,r];case 90:return[n,e-l,r,s];case 180:return[i,e-l,s,r];case 270:return[i,e-a,r,s];default:throw new Error("Invalid rotation")}}onceAdded(t){}isEmpty(){return!1}enableEditMode(){ea(this,kc,!0)}disableEditMode(){ea(this,kc,!1)}isInEditMode(){return $i(this,kc)}shouldGetKeyboardEvents(){return $i(this,Yc)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:t,left:e,bottom:n,right:l}=this.getClientDimensions(),{innerHeight:i,innerWidth:a}=window;return e0&&t0}rebuild(){na(this,xc,ld).call(this)}rotate(t){}resize(){}serializeDeleted(){var t;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:(null==(t=this._initialData)?void 0:t.popupRef)||""}}serialize(t=!1,e=null){Ba("An editor must be serializable")}static async deserialize(t,e,n){const l=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:n});l.rotation=t.rotation,ea(l,Zc,t.accessibilityData);const[i,a]=l.pageDimensions,[s,r,o,c]=l.getRectInCurrentCoords(t.rect,a);return l.x=s/i,l.y=r/a,l.width=o/i,l.height=c/a,l}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||null!==this.serialize())}remove(){var t,e;if(null==(t=$i(this,gc))||t.abort(),ea(this,gc,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),$i(this,Cc)&&(clearTimeout($i(this,Cc)),ea(this,Cc,null)),na(this,xc,od).call(this),this.removeEditToolbar(),$i(this,Dc)){for(const t of $i(this,Dc).values())clearTimeout(t);ea(this,Dc,null)}this.parent=null,null==(e=$i(this,fc))||e.destroy(),ea(this,fc,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(na(this,xc,jc).call(this),$i(this,yc).classList.remove("hidden"),dr(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(e){if(!this.isResizable||e.target!==this.div||"Enter"!==e.key)return;this._uiManager.setSelected(this),ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const n=$i(this,yc).children;if(!$i(this,Nc)){ea(this,Nc,Array.from(n));const e=na(this,xc,id).bind(this),l=na(this,xc,ad).bind(this),i=this._uiManager._signal;for(const n of $i(this,Nc)){const a=n.getAttribute("data-resizer-name");n.setAttribute("role","spinbutton"),n.addEventListener("keydown",e,{signal:i}),n.addEventListener("blur",l,{signal:i}),n.addEventListener("focus",na(this,xc,sd).bind(this,a),{signal:i}),n.setAttribute("data-l10n-id",t._l10nResizer[a])}}const l=$i(this,Nc)[0];let i=0;for(const t of n){if(t===l)break;i++}const a=(360-this.rotation+this.parentRotation)%360/90*($i(this,Nc).length/4);if(a!==i){if(ai)for(let t=0;t{var t,e;null!=(t=this.div)&&t.classList.contains("selectedEditor")&&(null==(e=this._editToolbar)||e.show())}))}unselect(){var t,e,n,l,i;null==(t=$i(this,yc))||t.classList.add("hidden"),null==(e=this.div)||e.classList.remove("selectedEditor"),null!=(n=this.div)&&n.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),null==(l=this._editToolbar)||l.hide(),null==(i=$i(this,Rc))||i.toggleAltTextBadge(!0)}updateParams(t,e){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return $i(this,Jc)}set isEditing(t){ea(this,Jc,t),this.parent&&(t?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(t,e){ea(this,Qc,!0);const n=t/e,{style:l}=this.div;l.aspectRatio=n,l.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(e,n=!1){if(n){$i(this,Dc)||ea(this,Dc,new Map);const{action:n}=e;let l=$i(this,Dc).get(n);return l&&clearTimeout(l),l=setTimeout((()=>{this._reportTelemetry(e),$i(this,Dc).delete(n),0===$i(this,Dc).size&&ea(this,Dc,null)}),t._telemetryTimeout),void $i(this,Dc).set(n,l)}e.type||(e.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:e}})}show(t=this._isVisible){this.div.classList.toggle("hidden",!t),this._isVisible=t}enable(){this.div&&(this.div.tabIndex=0),ea(this,Sc,!1)}disable(){this.div&&(this.div.tabIndex=-1),ea(this,Sc,!0)}renderAnnotationElement(t){let e=t.container.querySelector(".annotationContent");if(e){if("CANVAS"===e.nodeName){const t=e;e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.before(e)}}else e=document.createElement("div"),e.classList.add("annotationContent",this.editorType),t.container.prepend(e);return e}resetAnnotationElement(t){const{firstChild:e}=t.container;"DIV"===(null==e?void 0:e.nodeName)&&e.classList.contains("annotationContent")&&e.remove()}};Zc=new WeakMap,Nc=new WeakMap,Rc=new WeakMap,Sc=new WeakMap,Wc=new WeakMap,Vc=new WeakMap,Qc=new WeakMap,yc=new WeakMap,Tc=new WeakMap,Mc=new WeakMap,gc=new WeakMap,Ec=new WeakMap,Gc=new WeakMap,Bc=new WeakMap,Jc=new WeakMap,kc=new WeakMap,Yc=new WeakMap,Cc=new WeakMap,Xc=new WeakMap,Ic=new WeakMap,Dc=new WeakMap,fc=new WeakMap,Lc=new WeakMap,wc=new WeakMap,xc=new WeakSet,zc=function([t,e],n,l){[n,l]=this.screenToPageTranslation(n,l),this.x+=n/t,this.y+=l/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},vc=new WeakSet,Oc=function(t,e,n){switch(n){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}},_c=function(t){switch(t){case 90:{const[t,e]=this.pageDimensions;return[0,-t/e,e/t,0]}case 180:return[-1,0,0,-1];case 270:{const[t,e]=this.pageDimensions;return[0,t/e,-e/t,0]}default:return[1,0,0,1]}},jc=function(){if($i(this,yc))return;ea(this,yc,document.createElement("div")),$i(this,yc).classList.add("resizers");const t=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const n of t){const t=document.createElement("div");$i(this,yc).append(t),t.classList.add("resizer",n),t.setAttribute("data-resizer-name",n),t.addEventListener("pointerdown",na(this,xc,Kc).bind(this,n),{signal:e}),t.addEventListener("contextmenu",Ws,{signal:e}),t.tabIndex=-1}this.div.prepend($i(this,yc))},Kc=function(t,e){var n;e.preventDefault();const{isMac:l}=Aa.platform;if(0!==e.button||e.ctrlKey&&l)return;null==(n=$i(this,Rc))||n.toggle(!1);const i=this._isDraggable;this._isDraggable=!1,ea(this,Tc,[e.screenX,e.screenY]);const a=new AbortController,s=this._uiManager.combinedSignal(a);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",na(this,xc,Hc).bind(this,t),{passive:!0,capture:!0,signal:s}),window.addEventListener("touchmove",Vs,{passive:!1,signal:s}),window.addEventListener("contextmenu",Ws,{signal:s}),ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const r=this.parent.div.style.cursor,o=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const c=()=>{var t;a.abort(),this.parent.togglePointerEvents(!0),null==(t=$i(this,Rc))||t.toggle(!0),this._isDraggable=i,this.parent.div.style.cursor=r,this.div.style.cursor=o,na(this,xc,Ac).call(this)};window.addEventListener("pointerup",c,{signal:s}),window.addEventListener("blur",c,{signal:s})},Pc=function(t,e,n,l){this.width=n,this.height=l,this.x=t,this.y=e;const[i,a]=this.parentDimensions;this.setDims(i*n,a*l),this.fixAndSetPosition(),this._onResized()},Ac=function(){if(!$i(this,Mc))return;const{savedX:t,savedY:e,savedWidth:n,savedHeight:l}=$i(this,Mc);ea(this,Mc,null);const i=this.x,a=this.y,s=this.width,r=this.height;i===t&&a===e&&s===n&&r===l||this.addCommands({cmd:na(this,xc,Pc).bind(this,i,a,s,r),undo:na(this,xc,Pc).bind(this,t,e,n,l),mustExec:!0})},Hc=function(t,e){const[n,l]=this.parentDimensions,i=this.x,a=this.y,s=this.width,r=this.height,o=cd.MIN_SIZE/n,c=cd.MIN_SIZE/l,d=na(this,xc,_c).call(this,this.rotation),u=(t,e)=>[d[0]*t+d[2]*e,d[1]*t+d[3]*e],h=na(this,xc,_c).call(this,360-this.rotation),m=(t,e)=>[h[0]*t+h[2]*e,h[1]*t+h[3]*e];let U,p,F=!1,b=!1;switch(t){case"topLeft":F=!0,U=(t,e)=>[0,0],p=(t,e)=>[t,e];break;case"topMiddle":U=(t,e)=>[t/2,0],p=(t,e)=>[t/2,e];break;case"topRight":F=!0,U=(t,e)=>[t,0],p=(t,e)=>[0,e];break;case"middleRight":b=!0,U=(t,e)=>[t,e/2],p=(t,e)=>[0,e/2];break;case"bottomRight":F=!0,U=(t,e)=>[t,e],p=(t,e)=>[0,0];break;case"bottomMiddle":U=(t,e)=>[t/2,e],p=(t,e)=>[t/2,0];break;case"bottomLeft":F=!0,U=(t,e)=>[0,e],p=(t,e)=>[t,0];break;case"middleLeft":b=!0,U=(t,e)=>[0,e/2],p=(t,e)=>[t,e/2];break}const Z=U(s,r),N=p(s,r);let R=u(...N);const S=cd._round(i+R[0]),W=cd._round(a+R[1]);let V,Q,y=1,T=1;if(e.fromKeyboard)({deltaX:V,deltaY:Q}=e);else{const{screenX:t,screenY:n}=e,[l,i]=$i(this,Tc);[V,Q]=this.screenToPageTranslation(t-l,n-i),$i(this,Tc)[0]=t,$i(this,Tc)[1]=n}if([V,Q]=m(V/n,Q/l),F){const t=Math.hypot(s,r);y=T=Math.max(Math.min(Math.hypot(N[0]-Z[0]-V,N[1]-Z[1]-Q)/t,1/s,1/r),o/s,c/r)}else b?y=Math.max(o,Math.min(1,Math.abs(N[0]-Z[0]-V)))/s:T=Math.max(c,Math.min(1,Math.abs(N[1]-Z[1]-Q)))/r;const M=cd._round(s*y),g=cd._round(r*T);R=u(...p(M,g));const E=S-R[0],G=W-R[1];$i(this,Bc)||ea(this,Bc,[this.x,this.y,this.width,this.height]),this.width=M,this.height=g,this.x=E,this.y=G,this.setDims(n*M,l*g),this.fixAndSetPosition(),this._onResizing()},qc=function(){var t;ea(this,Mc,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),null==(t=$i(this,Rc))||t.toggle(!1),this.parent.togglePointerEvents(!1)},$c=function(t,e,n){let l=n/e*.7+1-.7;if(1===l)return;const i=na(this,xc,_c).call(this,this.rotation),a=(t,e)=>[i[0]*t+i[2]*e,i[1]*t+i[3]*e],[s,r]=this.parentDimensions,o=this.x,c=this.y,d=this.width,u=this.height,h=cd.MIN_SIZE/s,m=cd.MIN_SIZE/r;l=Math.max(Math.min(l,1/d,1/u),h/d,m/u);const U=cd._round(d*l),p=cd._round(u*l);if(U===d&&p===u)return;$i(this,Bc)||ea(this,Bc,[o,c,d,u]);const F=a(d/2,u/2),b=cd._round(o+F[0]),Z=cd._round(c+F[1]),N=a(U/2,p/2);this.x=b-N[0],this.y=Z-N[1],this.width=U,this.height=p,this.setDims(s*U,r*p),this.fixAndSetPosition(),this._onResizing()},td=function(){var t;null==(t=$i(this,Rc))||t.toggle(!0),this.parent.togglePointerEvents(!0),na(this,xc,Ac).call(this)},ed=function(t){const{isMac:e}=Aa.platform;t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)},nd=function(t){const{isSelected:e}=this;this._uiManager.setUpDragSession();let n=!1;const l=new AbortController,i=this._uiManager.combinedSignal(l),a={capture:!0,passive:!1,signal:i},s=t=>{l.abort(),ea(this,Wc,null),ea(this,Gc,!1),this._uiManager.endDragSession()||na(this,xc,ed).call(this,t),n&&this._onStopDragging()};e&&(ea(this,Xc,t.clientX),ea(this,Ic,t.clientY),ea(this,Wc,t.pointerId),ea(this,Vc,t.pointerType),window.addEventListener("pointermove",(t=>{n||(n=!0,this._onStartDragging());const{clientX:e,clientY:l,pointerId:i}=t;if(i!==$i(this,Wc))return void Vs(t);const[a,s]=this.screenToPageTranslation(e-$i(this,Xc),l-$i(this,Ic));ea(this,Xc,e),ea(this,Ic,l),this._uiManager.dragSelectedEditors(a,s)}),a),window.addEventListener("touchmove",Vs,a),window.addEventListener("pointerdown",(t=>{t.pointerType===$i(this,Vc)&&($i(this,fc)||t.isPrimary)&&s(t),Vs(t)}),a));const r=t=>{$i(this,Wc)&&$i(this,Wc)!==t.pointerId?Vs(t):s(t)};window.addEventListener("pointerup",r,{signal:i}),window.addEventListener("blur",r,{signal:i})},ld=function(){if($i(this,gc)||!this.div)return;ea(this,gc,new AbortController);const t=this._uiManager.combinedSignal($i(this,gc));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:t}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:t})},id=function(t){cd._resizerKeyboardManager.exec(this,t)},ad=function(t){var e;$i(this,Yc)&&(null==(e=t.relatedTarget)?void 0:e.parentNode)!==$i(this,yc)&&na(this,xc,od).call(this)},sd=function(t){ea(this,Ec,$i(this,Yc)?t:"")},rd=function(t){if($i(this,Nc))for(const e of $i(this,Nc))e.tabIndex=t},od=function(){ea(this,Yc,!1),na(this,xc,rd).call(this,-1),na(this,xc,Ac).call(this)},ta(cd,vc),Hi(cd,"_l10n",null),Hi(cd,"_l10nResizer",null),Hi(cd,"_borderLineWidth",-1),Hi(cd,"_colorManager",new Vr),Hi(cd,"_zIndex",1),Hi(cd,"_telemetryTimeout",1e3);let dd=cd;class ud extends dd{constructor(t){super(t),this.annotationElementId=t.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const hd=3285377520,md=4294901760,Ud=65535;class pd{constructor(t){this.h1=t?4294967295&t:hd,this.h2=t?4294967295&t:hd}update(t){let e,n;if("string"==typeof t){e=new Uint8Array(2*t.length),n=0;for(let l=0,i=t.length;l>>8,e[n++]=255&i)}}else{if(!ArrayBuffer.isView(t))throw new Error("Invalid data format, must be a string or TypedArray.");e=t.slice(),n=e.byteLength}const l=n>>2,i=n-4*l,a=new Uint32Array(e.buffer,0,l);let s=0,r=0,o=this.h1,c=this.h2;const d=3432918353,u=461845907,h=d&Ud,m=u&Ud;for(let U=0;U>>17,s=s*u&md|s*m&Ud,o^=s,o=o<<13|o>>>19,o=5*o+3864292196):(r=a[U],r=r*d&md|r*h&Ud,r=r<<15|r>>>17,r=r*u&md|r*m&Ud,c^=r,c=c<<13|c>>>19,c=5*c+3864292196);switch(s=0,i){case 3:s^=e[4*l+2]<<16;case 2:s^=e[4*l+1]<<8;case 1:s^=e[4*l],s=s*d&md|s*h&Ud,s=s<<15|s>>>17,s=s*u&md|s*m&Ud,1&l?o^=s:c^=s}this.h1=o,this.h2=c}hexdigest(){let t=this.h1,e=this.h2;return t^=e>>>1,t=3981806797*t&md|36045*t&Ud,e=4283543511*e&md|(2950163797*(e<<16|t>>>16)&md)>>>16,t^=e>>>1,t=444984403*t&md|60499*t&Ud,e=3301882366*e&md|(3120437893*(e<<16|t>>>16)&md)>>>16,t^=e>>>1,(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}const Fd=Object.freeze({map:null,hash:"",transfer:void 0});var bd,Zd,Nd,Rd,Sd,Wd,Vd;class Qd{constructor(){ta(this,Rd),ta(this,bd,!1),ta(this,Zd,null),ta(this,Nd,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(t,e){const n=$i(this,Nd).get(t);return void 0===n?e:Object.assign(e,n)}getRawValue(t){return $i(this,Nd).get(t)}remove(t){if($i(this,Nd).delete(t),0===$i(this,Nd).size&&this.resetModified(),"function"==typeof this.onAnnotationEditor){for(const t of $i(this,Nd).values())if(t instanceof dd)return;this.onAnnotationEditor(null)}}setValue(t,e){const n=$i(this,Nd).get(t);let l=!1;if(void 0!==n)for(const[i,a]of Object.entries(e))n[i]!==a&&(l=!0,n[i]=a);else l=!0,$i(this,Nd).set(t,e);l&&na(this,Rd,Sd).call(this),e instanceof dd&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(e.constructor._type)}has(t){return $i(this,Nd).has(t)}getAll(){return $i(this,Nd).size>0?ja($i(this,Nd)):null}setAll(t){for(const[e,n]of Object.entries(t))this.setValue(e,n)}get size(){return $i(this,Nd).size}resetModified(){$i(this,bd)&&(ea(this,bd,!1),"function"==typeof this.onResetModified&&this.onResetModified())}get print(){return new yd(this)}get serializable(){if(0===$i(this,Nd).size)return Fd;const t=new Map,e=new pd,n=[],l=Object.create(null);let i=!1;for(const[a,s]of $i(this,Nd)){const n=s instanceof dd?s.serialize(!1,l):s;n&&(t.set(a,n),e.update(`${a}:${JSON.stringify(n)}`),i||(i=!!n.bitmap))}if(i)for(const a of t.values())a.bitmap&&n.push(a.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfer:n}:Fd}get editorStats(){let t=null;const e=new Map;for(const n of $i(this,Nd).values()){if(!(n instanceof dd))continue;const l=n.telemetryFinalData;if(!l)continue;const{type:i}=l;e.has(i)||e.set(i,Object.getPrototypeOf(n).constructor),t||(t=Object.create(null));const a=t[i]||(t[i]=new Map);for(const[t,e]of Object.entries(l)){if("type"===t)continue;let n=a.get(t);n||(n=new Map,a.set(t,n));const l=n.get(e)??0;n.set(e,l+1)}}for(const[n,l]of e)t[n]=l.computeTelemetryFinalData(t[n]);return t}resetModifiedIds(){ea(this,Zd,null)}get modifiedIds(){if($i(this,Zd))return $i(this,Zd);const t=[];for(const e of $i(this,Nd).values())!(e instanceof dd)||!e.annotationElementId||!e.serialize()||t.push(e.annotationElementId);return ea(this,Zd,{ids:new Set(t),hash:t.join(",")})}}bd=new WeakMap,Zd=new WeakMap,Nd=new WeakMap,Rd=new WeakSet,Sd=function(){$i(this,bd)||(ea(this,bd,!0),"function"==typeof this.onSetModified&&this.onSetModified())};class yd extends Qd{constructor(t){super(),ta(this,Wd);const{map:e,hash:n,transfer:l}=t.serializable,i=structuredClone(e,l?{transfer:l}:null);ea(this,Wd,{map:i,hash:n,transfer:l})}get print(){Ba("Should not call PrintAnnotationStorage.print")}get serializable(){return $i(this,Wd)}get modifiedIds(){return Ca(this,"modifiedIds",{ids:new Set,hash:""})}}Wd=new WeakMap;class Td{constructor({ownerDocument:t=globalThis.document,styleElement:e=null}){ta(this,Vd,new Set),this._document=t,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t),this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t),this._document.fonts.delete(t)}insertRule(t){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear(),$i(this,Vd).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:t,_inspectFont:e}){if(t&&!$i(this,Vd).has(t.loadedName)){if(Ja(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:n,src:l,style:i}=t,a=new FontFace(n,l,i);this.addNativeFontFace(a);try{await a.load(),$i(this,Vd).add(n),null==e||e(t)}catch{Ga(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}Ba("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;if(t.attached=!0,t.systemFontInfo)return void await this.loadSystemFont(t);if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(eG){throw Ga(`Failed to load font '${e.family}': '${eG}'.`),t.disableFontFace=!0,eG}}return}const e=t.createFontFaceRule();if(e){if(this.insertRule(e),this.isSyncFontLoadingSupported)return;await new Promise((e=>{const n=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,n)}))}}get isFontLoadingAPISupported(){var t;const e=!(null==(t=this._document)||!t.fonts);return Ca(this,"isFontLoadingAPISupported",e)}get isSyncFontLoadingSupported(){let t=!1;return(oa||typeof navigator<"u"&&"string"==typeof(null==navigator?void 0:navigator.userAgent)&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(t=!0),Ca(this,"isSyncFontLoadingSupported",t)}_queueLoadingCallback(t){function e(){for(Ja(!l.done,"completeRequest() cannot be called twice."),l.done=!0;n.length>0&&n[0].done;){const t=n.shift();setTimeout(t.callback,0)}}const{loadingRequests:n}=this,l={done:!1,complete:e,callback:t};return n.push(l),l}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Ca(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function n(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function l(t,e,n,l){const i=t.substring(0,e),a=t.substring(e+n);return i+l+a}let i,a;const s=this._document.createElement("canvas");s.width=1,s.height=1;const r=s.getContext("2d");let o=0;function c(t,e){if(++o>30)return Ga("Load test font never loaded."),void e();r.font="30px "+t,r.fillText(".",0,20),r.getImageData(0,0,1,1).data[3]>0?e():setTimeout(c.bind(null,t,e))}const d=`lt${Date.now()}${this.loadTestFontId++}`;let u=this._loadTestFont;u=l(u,976,d.length,d);const h=16,m=1482184792;let U=n(u,h);for(i=0,a=d.length-3;i{b.remove(),e.complete()}))}}Vd=new WeakMap;class Md{constructor(t,{disableFontFace:e=!1,fontExtraProperties:n=!1,inspectFont:l=null}){this.compiledGlyphs=Object.create(null);for(const i in t)this[i]=t[i];this.disableFontFace=!0===e,this.fontExtraProperties=!0===n,this._inspectFont=l}createNativeFontFace(){var t;if(!this.data||this.disableFontFace)return null;let e;if(this.cssFontInfo){const t={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`),e=new FontFace(this.cssFontInfo.fontFamily,this.data,t)}else e=new FontFace(this.loadedName,this.data,{});return null==(t=this._inspectFont)||t.call(this,this),e}createFontFaceRule(){var t;if(!this.data||this.disableFontFace)return null;const e=`url(data:${this.mimetype};base64,${cs(this.data)});`;let n;if(this.cssFontInfo){let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),n=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${e}}`}else n=`@font-face {font-family:"${this.loadedName}";src:${e}}`;return null==(t=this._inspectFont)||t.call(this,this,e),n}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];const n=this.loadedName+"_path_"+e;let l;try{l=t.get(n)}catch(a){Ga(`getPathGenerator - ignoring character: "${a}".`)}const i=new Path2D(l||"");return this.fontExtraProperties||t.delete(n),this.compiledGlyphs[e]=i}}const gd={DATA:1,ERROR:2},Ed={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Gd(){}function Bd(t){if(t instanceof za||t instanceof fa||t instanceof La||t instanceof Ia||t instanceof wa||t instanceof Da)return t;switch(t instanceof Error||"object"==typeof t&&null!==t||Ba('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),t.name){case"AbortException":return new za(t.message);case"InvalidPDFException":return new fa(t.message);case"MissingPDFException":return new La(t.message);case"PasswordException":return new Ia(t.message,t.code);case"UnexpectedResponseException":return new wa(t.message,t.status);case"UnknownErrorException":return new Da(t.message,t.details)}return new Da(t.message,t.toString())}var Jd,kd,Yd,Cd,Xd,Id,Dd,fd,Ld,wd,xd,zd,vd,Od,_d,jd,Kd,Pd,Ad,Hd,qd,$d,tu,eu,nu,lu,iu;class au{constructor(t,e,n){ta(this,kd),ta(this,Jd,new AbortController),this.sourceName=t,this.targetName=e,this.comObj=n,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),n.addEventListener("message",na(this,kd,Yd).bind(this),{signal:$i(this,Jd).signal})}on(t,e){const n=this.actionHandler;if(n[t])throw new Error(`There is already an actionName called "${t}"`);n[t]=e}send(t,e,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},n)}sendWithPromise(t,e,n){const l=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[l]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:l,data:e},n)}catch(a){i.reject(a)}return i.promise}sendWithStream(t,e,n,l){const i=this.streamId++,a=this.sourceName,s=this.targetName,r=this.comObj;return new ReadableStream({start:n=>{const o=Promise.withResolvers();return this.streamControllers[i]={controller:n,startCall:o,pullCall:null,cancelCall:null,isClosed:!1},r.postMessage({sourceName:a,targetName:s,action:t,streamId:i,data:e,desiredSize:n.desiredSize},l),o.promise},pull:t=>{const e=Promise.withResolvers();return this.streamControllers[i].pullCall=e,r.postMessage({sourceName:a,targetName:s,stream:Ed.PULL,streamId:i,desiredSize:t.desiredSize}),e.promise},cancel:t=>{Ja(t instanceof Error,"cancel must have a valid reason");const e=Promise.withResolvers();return this.streamControllers[i].cancelCall=e,this.streamControllers[i].isClosed=!0,r.postMessage({sourceName:a,targetName:s,stream:Ed.CANCEL,streamId:i,reason:Bd(t)}),e.promise}},n)}destroy(){var t;null==(t=$i(this,Jd))||t.abort(),ea(this,Jd,null)}}Jd=new WeakMap,kd=new WeakSet,Yd=function({data:t}){if(t.targetName!==this.sourceName)return;if(t.stream)return void na(this,kd,Xd).call(this,t);if(t.callback){const e=t.callbackId,n=this.callbackCapabilities[e];if(!n)throw new Error(`Cannot resolve callback ${e}`);if(delete this.callbackCapabilities[e],t.callback===gd.DATA)n.resolve(t.data);else{if(t.callback!==gd.ERROR)throw new Error("Unexpected callback case");n.reject(Bd(t.reason))}return}const e=this.actionHandler[t.action];if(!e)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const n=this.sourceName,l=t.sourceName,i=this.comObj;Promise.try(e,t.data).then((function(e){i.postMessage({sourceName:n,targetName:l,callback:gd.DATA,callbackId:t.callbackId,data:e})}),(function(e){i.postMessage({sourceName:n,targetName:l,callback:gd.ERROR,callbackId:t.callbackId,reason:Bd(e)})}))}else t.streamId?na(this,kd,Cd).call(this,t):e(t.data)},Cd=function(t){const e=t.streamId,n=this.sourceName,l=t.sourceName,i=this.comObj,a=this,s=this.actionHandler[t.action],r={enqueue(t,a=1,s){if(this.isCancelled)return;const r=this.desiredSize;this.desiredSize-=a,r>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),i.postMessage({sourceName:n,targetName:l,stream:Ed.ENQUEUE,streamId:e,chunk:t},s)},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:l,stream:Ed.CLOSE,streamId:e}),delete a.streamSinks[e])},error(t){Ja(t instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,i.postMessage({sourceName:n,targetName:l,stream:Ed.ERROR,streamId:e,reason:Bd(t)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};r.sinkCapability.resolve(),r.ready=r.sinkCapability.promise,this.streamSinks[e]=r,Promise.try(s,t.data,r).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.START_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.START_COMPLETE,streamId:e,reason:Bd(t)})}))},Xd=function(t){const e=t.streamId,n=this.sourceName,l=t.sourceName,i=this.comObj,a=this.streamControllers[e],s=this.streamSinks[e];switch(t.stream){case Ed.START_COMPLETE:t.success?a.startCall.resolve():a.startCall.reject(Bd(t.reason));break;case Ed.PULL_COMPLETE:t.success?a.pullCall.resolve():a.pullCall.reject(Bd(t.reason));break;case Ed.PULL:if(!s){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,success:!0});break}s.desiredSize<=0&&t.desiredSize>0&&s.sinkCapability.resolve(),s.desiredSize=t.desiredSize,Promise.try(s.onPull||Gd).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.PULL_COMPLETE,streamId:e,reason:Bd(t)})}));break;case Ed.ENQUEUE:if(Ja(a,"enqueue should have stream controller"),a.isClosed)break;a.controller.enqueue(t.chunk);break;case Ed.CLOSE:if(Ja(a,"close should have stream controller"),a.isClosed)break;a.isClosed=!0,a.controller.close(),na(this,kd,Id).call(this,a,e);break;case Ed.ERROR:Ja(a,"error should have stream controller"),a.controller.error(Bd(t.reason)),na(this,kd,Id).call(this,a,e);break;case Ed.CANCEL_COMPLETE:t.success?a.cancelCall.resolve():a.cancelCall.reject(Bd(t.reason)),na(this,kd,Id).call(this,a,e);break;case Ed.CANCEL:if(!s)break;const r=Bd(t.reason);Promise.try(s.onCancel||Gd,r).then((function(){i.postMessage({sourceName:n,targetName:l,stream:Ed.CANCEL_COMPLETE,streamId:e,success:!0})}),(function(t){i.postMessage({sourceName:n,targetName:l,stream:Ed.CANCEL_COMPLETE,streamId:e,reason:Bd(t)})})),s.sinkCapability.reject(r),s.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}},Id=async function(t,e){var n,l,i;await Promise.allSettled([null==(n=t.startCall)?void 0:n.promise,null==(l=t.pullCall)?void 0:l.promise,null==(i=t.cancelCall)?void 0:i.promise]),delete this.streamControllers[e]};class su{constructor({enableHWA:t=!1}){ta(this,Dd,!1),ea(this,Dd,t)}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const n=this._createCanvas(t,e);return{canvas:n,context:n.getContext("2d",{willReadFrequently:!$i(this,Dd)})}}reset(t,e,n){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||n<=0)throw new Error("Invalid canvas size");t.canvas.width=e,t.canvas.height=n}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0,t.canvas.height=0,t.canvas=null,t.context=null}_createCanvas(t,e){Ba("Abstract method `_createCanvas` called.")}}Dd=new WeakMap;class ru extends su{constructor({ownerDocument:t=globalThis.document,enableHWA:e=!1}){super({enableHWA:e}),this._document=t}_createCanvas(t,e){const n=this._document.createElement("canvas");return n.width=t,n.height=e,n}}class ou{constructor({baseUrl:t=null,isCompressed:e=!0}){this.baseUrl=t,this.isCompressed=e}async fetch({name:t}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!t)throw new Error("CMap name must be specified.");const e=this.baseUrl+t+(this.isCompressed?".bcmap":"");return this._fetch(e).then((t=>({cMapData:t,isCompressed:this.isCompressed}))).catch((t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${e}`)}))}async _fetch(t){Ba("Abstract method `_fetch` called.")}}class cu extends ou{async _fetch(t){const e=await ms(t,this.isCompressed?"arraybuffer":"text");return e instanceof ArrayBuffer?new Uint8Array(e):Oa(e)}}sa(4520);class du{addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addAlphaFilter(t){return"none"}addLuminosityFilter(t){return"none"}addHighlightHCMFilter(t,e,n,l,i){return"none"}destroy(t=!1){}}class uu extends du{constructor({docId:t,ownerDocument:e=globalThis.document}){super(),ta(this,_d),ta(this,fd),ta(this,Ld),ta(this,wd),ta(this,xd),ta(this,zd),ta(this,vd),ta(this,Od,0),ea(this,xd,t),ea(this,zd,e)}addFilter(t){if(!t)return"none";let e=$i(this,_d,jd).get(t);if(e)return e;const[n,l,i]=na(this,_d,Ad).call(this,t),a=1===t.length?n:`${n}${l}${i}`;if(e=$i(this,_d,jd).get(a),e)return $i(this,_d,jd).set(t,e),e;const s=`g_${$i(this,xd)}_transfer_map_${la(this,Od)._++}`,r=na(this,_d,Hd).call(this,s);$i(this,_d,jd).set(t,r),$i(this,_d,jd).set(a,r);const o=na(this,_d,tu).call(this,s);return na(this,_d,nu).call(this,n,l,i,o),r}addHCMFilter(t,e){var n;const l=`${t}-${e}`,i="base";let a=$i(this,_d,Kd).get(i);if((null==a?void 0:a.key)===l||(a?(null==(n=a.filter)||n.remove(),a.key=l,a.url="none",a.filter=null):(a={key:l,url:"none",filter:null},$i(this,_d,Kd).set(i,a)),!t||!e))return a.url;const s=na(this,_d,iu).call(this,t);t=ns.makeHexColor(...s);const r=na(this,_d,iu).call(this,e);if(e=ns.makeHexColor(...r),$i(this,_d,Pd).style.color="","#000000"===t&&"#ffffff"===e||t===e)return a.url;const o=new Array(256);for(let m=0;m<=255;m++){const t=m/255;o[m]=t<=.03928?t/12.92:((t+.055)/1.055)**2.4}const c=o.join(","),d=`g_${$i(this,xd)}_hcm_filter`,u=a.filter=na(this,_d,tu).call(this,d);na(this,_d,nu).call(this,c,c,c,u),na(this,_d,$d).call(this,u);const h=(t,e)=>{const n=s[t]/255,l=r[t]/255,i=new Array(e+1);for(let a=0;a<=e;a++)i[a]=n+a/e*(l-n);return i.join(",")};return na(this,_d,nu).call(this,h(0,5),h(1,5),h(2,5),u),a.url=na(this,_d,Hd).call(this,d),a.url}addAlphaFilter(t){let e=$i(this,_d,jd).get(t);if(e)return e;const[n]=na(this,_d,Ad).call(this,[t]),l=`alpha_${n}`;if(e=$i(this,_d,jd).get(l),e)return $i(this,_d,jd).set(t,e),e;const i=`g_${$i(this,xd)}_alpha_map_${la(this,Od)._++}`,a=na(this,_d,Hd).call(this,i);$i(this,_d,jd).set(t,a),$i(this,_d,jd).set(l,a);const s=na(this,_d,tu).call(this,i);return na(this,_d,lu).call(this,n,s),a}addLuminosityFilter(t){let e,n,l=$i(this,_d,jd).get(t||"luminosity");if(l)return l;if(t?([e]=na(this,_d,Ad).call(this,[t]),n=`luminosity_${e}`):n="luminosity",l=$i(this,_d,jd).get(n),l)return $i(this,_d,jd).set(t,l),l;const i=`g_${$i(this,xd)}_luminosity_map_${la(this,Od)._++}`,a=na(this,_d,Hd).call(this,i);$i(this,_d,jd).set(t,a),$i(this,_d,jd).set(n,a);const s=na(this,_d,tu).call(this,i);return na(this,_d,qd).call(this,s),t&&na(this,_d,lu).call(this,e,s),a}addHighlightHCMFilter(t,e,n,l,i){var a;const s=`${e}-${n}-${l}-${i}`;let r=$i(this,_d,Kd).get(t);if((null==r?void 0:r.key)===s||(r?(null==(a=r.filter)||a.remove(),r.key=s,r.url="none",r.filter=null):(r={key:s,url:"none",filter:null},$i(this,_d,Kd).set(t,r)),!e||!n))return r.url;const[o,c]=[e,n].map(na(this,_d,iu).bind(this));let d=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[h,m]=[l,i].map(na(this,_d,iu).bind(this));u{const l=new Array(256),i=(u-d)/n,a=t/255,s=(e-t)/(255*n);let r=0;for(let o=0;o<=n;o++){const t=Math.round(d+o*i),e=a+o*s;for(let n=r;n<=t;n++)l[n]=e;r=t+1}for(let o=r;o<256;o++)l[o]=l[r-1];return l.join(",")},p=`g_${$i(this,xd)}_hcm_${t}_filter`,F=r.filter=na(this,_d,tu).call(this,p);return na(this,_d,$d).call(this,F),na(this,_d,nu).call(this,U(h[0],m[0],5),U(h[1],m[1],5),U(h[2],m[2],5),F),r.url=na(this,_d,Hd).call(this,p),r.url}destroy(t=!1){var e,n,l,i;t&&null!=(e=$i(this,vd))&&e.size||(null==(n=$i(this,wd))||n.parentNode.parentNode.remove(),ea(this,wd,null),null==(l=$i(this,Ld))||l.clear(),ea(this,Ld,null),null==(i=$i(this,vd))||i.clear(),ea(this,vd,null),ea(this,Od,0))}}fd=new WeakMap,Ld=new WeakMap,wd=new WeakMap,xd=new WeakMap,zd=new WeakMap,vd=new WeakMap,Od=new WeakMap,_d=new WeakSet,jd=function(){return $i(this,Ld)||ea(this,Ld,new Map)},Kd=function(){return $i(this,vd)||ea(this,vd,new Map)},Pd=function(){if(!$i(this,wd)){const t=$i(this,zd).createElement("div"),{style:e}=t;e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const n=$i(this,zd).createElementNS(ds,"svg");n.setAttribute("width",0),n.setAttribute("height",0),ea(this,wd,$i(this,zd).createElementNS(ds,"defs")),t.append(n),n.append($i(this,wd)),$i(this,zd).body.append(t)}return $i(this,wd)},Ad=function(t){if(1===t.length){const e=t[0],n=new Array(256);for(let t=0;t<256;t++)n[t]=e[t]/255;const l=n.join(",");return[l,l,l]}const[e,n,l]=t,i=new Array(256),a=new Array(256),s=new Array(256);for(let r=0;r<256;r++)i[r]=e[r]/255,a[r]=n[r]/255,s[r]=l[r]/255;return[i.join(","),a.join(","),s.join(",")]},Hd=function(t){if(void 0===$i(this,fd)){ea(this,fd,"");const t=$i(this,zd).URL;t!==$i(this,zd).baseURI&&(Fs(t)?Ga('#createUrl: ignore "data:"-URL for performance reasons.'):ea(this,fd,t.split("#",1)[0]))}return`url(${$i(this,fd)}#${t})`},qd=function(t){const e=$i(this,zd).createElementNS(ds,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)},$d=function(t){const e=$i(this,zd).createElementNS(ds,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)},tu=function(t){const e=$i(this,zd).createElementNS(ds,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),$i(this,_d,Pd).append(e),e},eu=function(t,e,n){const l=$i(this,zd).createElementNS(ds,e);l.setAttribute("type","discrete"),l.setAttribute("tableValues",n),t.append(l)},nu=function(t,e,n,l){const i=$i(this,zd).createElementNS(ds,"feComponentTransfer");l.append(i),na(this,_d,eu).call(this,i,"feFuncR",t),na(this,_d,eu).call(this,i,"feFuncG",e),na(this,_d,eu).call(this,i,"feFuncB",n)},lu=function(t,e){const n=$i(this,zd).createElementNS(ds,"feComponentTransfer");e.append(n),na(this,_d,eu).call(this,n,"feFuncA",t)},iu=function(t){return $i(this,_d,Pd).style.color=t,gs(getComputedStyle($i(this,_d,Pd)).getPropertyValue("color"))};class hu{constructor({baseUrl:t=null}){this.baseUrl=t}async fetch({filename:t}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!t)throw new Error("Font filename must be specified.");const e=`${this.baseUrl}${t}`;return this._fetch(e).catch((t=>{throw new Error(`Unable to load font data at: ${e}`)}))}async _fetch(t){Ba("Abstract method `_fetch` called.")}}class mu extends hu{async _fetch(t){const e=await ms(t,"arraybuffer");return new Uint8Array(e)}}if(oa){let t;try{const e=process.getBuiltinModule("module").createRequire("file:///D:/vue/newfront/node_modules/vue-pdf-embed/dist/index.mjs");try{t=e("@napi-rs/canvas")}catch(TB){Ga(`Cannot load "@napi-rs/canvas" package: "${TB}".`)}}catch(MB){Ga(`Cannot access the \`require\` function: "${MB}".`)}globalThis.DOMMatrix||(null!=t&&t.DOMMatrix?globalThis.DOMMatrix=t.DOMMatrix:Ga("Cannot polyfill `DOMMatrix`, rendering may be broken.")),globalThis.ImageData||(null!=t&&t.ImageData?globalThis.ImageData=t.ImageData:Ga("Cannot polyfill `ImageData`, rendering may be broken.")),globalThis.Path2D||(null!=t&&t.Path2D?globalThis.Path2D=t.Path2D:Ga("Cannot polyfill `Path2D`, rendering may be broken."))}async function Uu(t){const e=await process.getBuiltinModule("fs").promises.readFile(t);return new Uint8Array(e)}class pu extends du{}class Fu extends su{_createCanvas(t,e){return process.getBuiltinModule("module").createRequire("file:///D:/vue/newfront/node_modules/vue-pdf-embed/dist/index.mjs")("@napi-rs/canvas").createCanvas(t,e)}}class bu extends ou{async _fetch(t){return Uu(t)}}class Zu extends hu{async _fetch(t){return Uu(t)}}const Nu={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function Ru(t,e){if(!e)return;const n=e[2]-e[0],l=e[3]-e[1],i=new Path2D;i.rect(e[0],e[1],n,l),t.clip(i)}class Su{getPattern(){Ba("Abstract method `getPattern` called.")}}class Wu extends Su{constructor(t){super(),this._type=t[1],this._bbox=t[2],this._colorStops=t[3],this._p0=t[4],this._p1=t[5],this._r0=t[6],this._r1=t[7],this.matrix=null}_createGradient(t){let e;"axial"===this._type?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const n of this._colorStops)e.addColorStop(n[0],n[1]);return e}getPattern(t,e,n,l){let i;if(l===Nu.STROKE||l===Nu.FILL){const a=e.current.getClippedPathBoundingBox(l,Gs(t))||[0,0,0,0],s=Math.ceil(a[2]-a[0])||1,r=Math.ceil(a[3]-a[1])||1,o=e.cachedCanvases.getCanvas("pattern",s,r),c=o.context;c.clearRect(0,0,c.canvas.width,c.canvas.height),c.beginPath(),c.rect(0,0,c.canvas.width,c.canvas.height),c.translate(-a[0],-a[1]),n=ns.transform(n,[1,0,0,1,a[0],a[1]]),c.transform(...e.baseTransform),this.matrix&&c.transform(...this.matrix),Ru(c,this._bbox),c.fillStyle=this._createGradient(c),c.fill(),i=t.createPattern(o.canvas,"no-repeat");const d=new DOMMatrix(n);i.setTransform(d)}else Ru(t,this._bbox),i=this._createGradient(t);return i}}function Vu(t,e,n,l,i,a,s,r){const o=e.coords,c=e.colors,d=t.data,u=4*t.width;let h;o[n+1]>o[l+1]&&(h=n,n=l,l=h,h=a,a=s,s=h),o[l+1]>o[i+1]&&(h=l,l=i,i=h,h=s,s=r,r=h),o[n+1]>o[l+1]&&(h=n,n=l,l=h,h=a,a=s,s=h);const m=(o[n]+e.offsetX)*e.scaleX,U=(o[n+1]+e.offsetY)*e.scaleY,p=(o[l]+e.offsetX)*e.scaleX,F=(o[l+1]+e.offsetY)*e.scaleY,b=(o[i]+e.offsetX)*e.scaleX,Z=(o[i+1]+e.offsetY)*e.scaleY;if(U>=Z)return;const N=c[a],R=c[a+1],S=c[a+2],W=c[s],V=c[s+1],Q=c[s+2],y=c[r],T=c[r+1],M=c[r+2],g=Math.round(U),E=Math.round(Z);let G,B,J,k,Y,C,X,I;for(let D=g;D<=E;D++){if(DZ?1:F===Z?0:(F-D)/(F-Z),G=p-(p-b)*t,B=W-(W-y)*t,J=V-(V-T)*t,k=Q-(Q-M)*t}let t;t=DZ?1:(U-D)/(U-Z),Y=m-(m-b)*t,C=N-(N-y)*t,X=R-(R-T)*t,I=S-(S-M)*t;const e=Math.round(Math.min(G,Y)),n=Math.round(Math.max(G,Y));let l=u*D+4*e;for(let i=e;i<=n;i++)t=(G-i)/(G-Y),t<0?t=0:t>1&&(t=1),d[l++]=B-(B-C)*t|0,d[l++]=J-(J-X)*t|0,d[l++]=k-(k-I)*t|0,d[l++]=255}}function Qu(t,e,n){const l=e.coords,i=e.colors;let a,s;switch(e.type){case"lattice":const r=e.verticesPerRow,o=Math.floor(l.length/r)-1,c=r-1;for(a=0;a=y?N=r:S=!0,Q>=T?R=o:W=!0;const M=this.getSizeAndScale(N,this.ctx.canvas.width,b),g=this.getSizeAndScale(R,this.ctx.canvas.height,Z),E=t.cachedCanvases.getCanvas("pattern",M.size,g.size),G=E.context,B=s.createCanvasGraphics(G);if(B.groupLevel=t.groupLevel,this.setFillAndStrokeStyleToContext(B,l,a),G.translate(-M.scale*c,-g.scale*d),B.transform(M.scale,0,0,g.scale,0,0),G.save(),this.clipBbox(B,c,d,u,h),B.baseTransform=Gs(B.ctx),B.executeOperatorList(n),B.endDrawing(),G.restore(),S||W){const e=E.canvas;S&&(N=r),W&&(R=o);const n=this.getSizeAndScale(N,this.ctx.canvas.width,b),l=this.getSizeAndScale(R,this.ctx.canvas.height,Z),i=n.size,a=l.size,s=t.cachedCanvases.getCanvas("pattern-workaround",i,a),u=s.context,h=S?Math.floor(m/r):0,p=W?Math.floor(U/o):0;for(let t=0;t<=h;t++)for(let n=0;n<=p;n++)u.drawImage(e,i*t,a*n,i,a,0,0,i,a);return{canvas:s.canvas,scaleX:n.scale,scaleY:l.scale,offsetX:c,offsetY:d}}return{canvas:E.canvas,scaleX:M.scale,scaleY:g.scale,offsetX:c,offsetY:d}}getSizeAndScale(e,n,l){const i=Math.max(t.MAX_PATTERN_SIZE,n);let a=Math.ceil(e*l);return a>=i?a=i:l=a/e,{scale:l,size:a}}clipBbox(t,e,n,l,i){const a=l-e,s=i-n;t.ctx.rect(e,n,a,s),t.current.updateRectMinMax(Gs(t.ctx),[e,n,l,i]),t.clip(),t.endPath()}setFillAndStrokeStyleToContext(t,e,n){const l=t.ctx,i=t.current;switch(e){case gu.COLORED:const t=this.ctx;l.fillStyle=t.fillStyle,l.strokeStyle=t.strokeStyle,i.fillColor=t.fillStyle,i.strokeColor=t.strokeStyle;break;case gu.UNCOLORED:const a=ns.makeHexColor(n[0],n[1],n[2]);l.fillStyle=a,l.strokeStyle=a,i.fillColor=a,i.strokeColor=a;break;default:throw new xa(`Unsupported paint type: ${e}`)}}getPattern(t,e,n,l){let i=n;l!==Nu.SHADING&&(i=ns.transform(i,e.baseTransform),this.matrix&&(i=ns.transform(i,this.matrix)));const a=this.createPatternCanvas(e);let s=new DOMMatrix(i);s=s.translate(a.offsetX,a.offsetY),s=s.scale(1/a.scaleX,1/a.scaleY);const r=t.createPattern(a.canvas,"repeat");return r.setTransform(s),r}};Hi(Eu,"MAX_PATTERN_SIZE",3e3);let Gu=Eu;function Bu({src:t,srcPos:e=0,dest:n,width:l,height:i,nonBlackColor:a=4294967295,inverseDecode:s=!1}){const r=Aa.isLittleEndian?4278190080:255,[o,c]=s?[a,r]:[r,a],d=l>>3,u=7&l,h=t.length;n=new Uint32Array(n.buffer);let m=0;for(let U=0;U{t.save=t.__originalSave,t.restore=t.__originalRestore,t.rotate=t.__originalRotate,t.scale=t.__originalScale,t.translate=t.__originalTranslate,t.transform=t.__originalTransform,t.setTransform=t.__originalSetTransform,t.resetTransform=t.__originalResetTransform,t.clip=t.__originalClip,t.moveTo=t.__originalMoveTo,t.lineTo=t.__originalLineTo,t.bezierCurveTo=t.__originalBezierCurveTo,t.rect=t.__originalRect,t.closePath=t.__originalClosePath,t.beginPath=t.__originalBeginPath,delete t._removeMirroring},t.save=function(){e.save(),this.__originalSave()},t.restore=function(){e.restore(),this.__originalRestore()},t.translate=function(t,n){e.translate(t,n),this.__originalTranslate(t,n)},t.scale=function(t,n){e.scale(t,n),this.__originalScale(t,n)},t.transform=function(t,n,l,i,a,s){e.transform(t,n,l,i,a,s),this.__originalTransform(t,n,l,i,a,s)},t.setTransform=function(t,n,l,i,a,s){e.setTransform(t,n,l,i,a,s),this.__originalSetTransform(t,n,l,i,a,s)},t.resetTransform=function(){e.resetTransform(),this.__originalResetTransform()},t.rotate=function(t){e.rotate(t),this.__originalRotate(t)},t.clip=function(t){e.clip(t),this.__originalClip(t)},t.moveTo=function(t,n){e.moveTo(t,n),this.__originalMoveTo(t,n)},t.lineTo=function(t,n){e.lineTo(t,n),this.__originalLineTo(t,n)},t.bezierCurveTo=function(t,n,l,i,a,s){e.bezierCurveTo(t,n,l,i,a,s),this.__originalBezierCurveTo(t,n,l,i,a,s)},t.rect=function(t,n,l,i){e.rect(t,n,l,i),this.__originalRect(t,n,l,i)},t.closePath=function(){e.closePath(),this.__originalClosePath()},t.beginPath=function(){e.beginPath(),this.__originalBeginPath()}}class fu{constructor(t){this.canvasFactory=t,this.cache=Object.create(null)}getCanvas(t,e,n){let l;return void 0!==this.cache[t]?(l=this.cache[t],this.canvasFactory.reset(l,e,n)):(l=this.canvasFactory.create(e,n),this.cache[t]=l),l}delete(t){delete this.cache[t]}clear(){for(const t in this.cache){const e=this.cache[t];this.canvasFactory.destroy(e),delete this.cache[t]}}}function Lu(t,e,n,l,i,a,s,r,o,c){const[d,u,h,m,U,p]=Gs(t);if(0===u&&0===h){const F=s*d+U,b=Math.round(F),Z=r*m+p,N=Math.round(Z),R=(s+o)*d+U,S=Math.abs(Math.round(R)-b)||1,W=(r+c)*m+p,V=Math.abs(Math.round(W)-N)||1;return t.setTransform(Math.sign(d),0,0,Math.sign(m),b,N),t.drawImage(e,n,l,i,a,0,0,S,V),t.setTransform(d,u,h,m,U,p),[S,V]}if(0===d&&0===m){const F=r*h+U,b=Math.round(F),Z=s*u+p,N=Math.round(Z),R=(r+c)*h+U,S=Math.abs(Math.round(R)-b)||1,W=(s+o)*u+p,V=Math.abs(Math.round(W)-N)||1;return t.setTransform(0,Math.sign(u),Math.sign(h),0,b,N),t.drawImage(e,n,l,i,a,0,0,V,S),t.setTransform(d,u,h,m,U,p),[V,S]}t.drawImage(e,n,l,i,a,s,r,o,c);const F=Math.hypot(d,u),b=Math.hypot(h,m);return[F*o,b*c]}function wu(t){const{width:e,height:n}=t;if(e>Xu||n>Xu)return null;const l=1e3,i=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),a=e+1;let s,r,o,c=new Uint8Array(a*(n+1));const d=e+7&-8;let u=new Uint8Array(d*n),h=0;for(const F of t.data){let t=128;for(;t>0;)u[h++]=F&t?0:255,t>>=1}let m=0;for(h=0,0!==u[h]&&(c[0]=1,++m),r=1;r>2)+(u[h+1]?4:0)+(u[h-d+1]?8:0),i[t]&&(c[o+r]=i[t],++m),h++;if(u[h-d]!==u[h]&&(c[o+r]=u[h]?2:4,++m),m>l)return null}for(h=d*(n-1),o=s*a,0!==u[h]&&(c[o]=8,++m),r=1;rl)return null;const U=new Int32Array([0,a,-1,0,-a,0,0,0,1]),p=new Path2D;for(s=0;m&&s<=n;s++){let t=s*a;const n=t+e;for(;t>4,c[t]&=i>>2|i<<2),p.lineTo(t%a,t/a|0),c[t]||--m}while(l!==t);--s}return u=null,c=null,function(t){t.save(),t.scale(1/e,-1/n),t.translate(0,-n),t.fill(p),t.beginPath(),t.restore()}}class xu{constructor(t,e){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=ca,this.textMatrixScale=1,this.fontMatrix=da,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=Na.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.patternStroke=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,t,e])}clone(){const t=Object.create(this);return t.clipBox=this.clipBox.slice(),t}setCurrentPoint(t,e){this.x=t,this.y=e}updatePathMinMax(t,e,n){[e,n]=ns.applyTransform([e,n],t),this.minX=Math.min(this.minX,e),this.minY=Math.min(this.minY,n),this.maxX=Math.max(this.maxX,e),this.maxY=Math.max(this.maxY,n)}updateRectMinMax(t,e){const n=ns.applyTransform(e,t),l=ns.applyTransform(e.slice(2),t),i=ns.applyTransform([e[0],e[3]],t),a=ns.applyTransform([e[2],e[1]],t);this.minX=Math.min(this.minX,n[0],l[0],i[0],a[0]),this.minY=Math.min(this.minY,n[1],l[1],i[1],a[1]),this.maxX=Math.max(this.maxX,n[0],l[0],i[0],a[0]),this.maxY=Math.max(this.maxY,n[1],l[1],i[1],a[1])}updateScalingPathMinMax(t,e){ns.scaleMinMax(t,e),this.minX=Math.min(this.minX,e[0]),this.minY=Math.min(this.minY,e[1]),this.maxX=Math.max(this.maxX,e[2]),this.maxY=Math.max(this.maxY,e[3])}updateCurvePathMinMax(t,e,n,l,i,a,s,r,o,c){const d=ns.bezierBoundingBox(e,n,l,i,a,s,r,o,c);c||this.updateRectMinMax(t,d)}getPathBoundingBox(t=Nu.FILL,e=null){const n=[this.minX,this.minY,this.maxX,this.maxY];if(t===Nu.STROKE){e||Ba("Stroke bounding box must include transform.");const t=ns.singularValueDecompose2dScale(e),l=t[0]*this.lineWidth/2,i=t[1]*this.lineWidth/2;n[0]-=l,n[1]-=i,n[2]+=l,n[3]+=i}return n}updateClipFromPath(){const t=ns.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(t){this.clipBox=t,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(t=Nu.FILL,e=null){return ns.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function zu(t,e){if(e instanceof ImageData)return void t.putImageData(e,0,0);const n=e.height,l=e.width,i=n%Iu,a=(n-i)/Iu,s=0===i?a:a+1,r=t.createImageData(l,Iu);let o,c=0;const d=e.data,u=r.data;let h,m,U,p;if(e.kind===Ra.GRAYSCALE_1BPP){const e=d.byteLength,n=new Uint32Array(u.buffer,0,u.byteLength>>2),p=n.length,F=l+7>>3,b=4294967295,Z=Aa.isLittleEndian?4278190080:255;for(h=0;hF?l:8*t-7,s=-8&a;let r=0,u=0;for(;i>=1}for(;o=a&&(U=i,p=l*U),o=0,m=p;m--;)u[o++]=d[c++],u[o++]=d[c++],u[o++]=d[c++],u[o++]=255;t.putImageData(r,0,h*Iu)}}}function vu(t,e){if(e.bitmap)return void t.drawImage(e.bitmap,0,0);const n=e.height,l=e.width,i=n%Iu,a=(n-i)/Iu,s=0===i?a:a+1,r=t.createImageData(l,Iu);let o=0;const c=e.data,d=r.data;for(let u=0;uCu&&"function"==typeof n,c=o?Date.now()+Yu:0;let d=0;const u=this.commonObjs,h=this.objs;let m;for(;;){if(void 0!==l&&s===l.nextBreakPoint)return l.breakIt(s,n),s;if(m=a[s],m!==Qa.dependency)this[m].apply(this,i[s]);else for(const t of i[s]){const e=t.startsWith("g_")?u:h;if(!e.has(t))return e.get(t,n),s}if(s++,s===r)return s;if(o&&++d>Cu){if(Date.now()>c)return n(),s;d=0}}}endDrawing(){na(this,qu,$u).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear(),na(this,qu,th).call(this)}_scaleImage(t,e){const n=t.width??t.displayWidth,l=t.height??t.displayHeight;let i,a,s=Math.max(Math.hypot(e[0],e[1]),1),r=Math.max(Math.hypot(e[2],e[3]),1),o=n,c=l,d="prescale1";for(;s>2&&o>1||r>2&&c>1;){let e=o,n=c;s>2&&o>1&&(e=o>=16384?Math.floor(o/2)-1||1:Math.ceil(o/2),s/=o/e),r>2&&c>1&&(n=c>=16384?Math.floor(c/2)-1||1:Math.ceil(c)/2,r/=c/n),i=this.cachedCanvases.getCanvas(d,e,n),a=i.context,a.clearRect(0,0,e,n),a.drawImage(t,0,0,o,c,0,0,e,n),t=i.canvas,o=e,c=n,d="prescale1"===d?"prescale2":"prescale1"}return{img:t,paintWidth:o,paintHeight:c}}_createMaskCanvas(t){const e=this.ctx,{width:n,height:l}=t,i=this.current.fillColor,a=this.current.patternFill,s=Gs(e);let r,o,c,d;if((t.bitmap||t.data)&&t.count>1){const e=t.bitmap||t.data.buffer;o=JSON.stringify(a?s:[s.slice(0,4),i]),r=this._cachedBitmapsMap.get(e),r||(r=new Map,this._cachedBitmapsMap.set(e,r));const n=r.get(o);if(n&&!a){const t=Math.round(Math.min(s[0],s[2])+s[4]),e=Math.round(Math.min(s[1],s[3])+s[5]);return{canvas:n,offsetX:t,offsetY:e}}c=n}c||(d=this.cachedCanvases.getCanvas("maskCanvas",n,l),vu(d.context,t));let u=ns.transform(s,[1/n,0,0,-1/l,0,0]);u=ns.transform(u,[1,0,0,1,0,-l]);const[h,m,U,p]=ns.getAxialAlignedBoundingBox([0,0,n,l],u),F=Math.round(U-h)||1,b=Math.round(p-m)||1,Z=this.cachedCanvases.getCanvas("fillCanvas",F,b),N=Z.context,R=h,S=m;N.translate(-R,-S),N.transform(...u),c||(c=this._scaleImage(d.canvas,Bs(N)),c=c.img,r&&a&&r.set(o,c)),N.imageSmoothingEnabled=ju(Gs(N),t.interpolate),Lu(N,c,0,0,c.width,c.height,0,0,n,l),N.globalCompositeOperation="source-in";const W=ns.transform(Bs(N),[1,0,0,1,-R,-S]);return N.fillStyle=a?i.getPattern(e,this,W,Nu.FILL):i,N.fillRect(0,0,n,l),r&&!a&&(this.cachedCanvases.delete("fillCanvas"),r.set(o,Z.canvas)),{canvas:Z.canvas,offsetX:Math.round(R),offsetY:Math.round(S)}}setLineWidth(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=t,this.ctx.lineWidth=t}setLineCap(t){this.ctx.lineCap=Ku[t]}setLineJoin(t){this.ctx.lineJoin=Pu[t]}setMiterLimit(t){this.ctx.miterLimit=t}setDash(t,e){const n=this.ctx;void 0!==n.setLineDash&&(n.setLineDash(t),n.lineDashOffset=e)}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n[0],n[1]);break;case"CA":this.current.strokeAlpha=n;break;case"ca":this.current.fillAlpha=n,this.ctx.globalAlpha=n;break;case"BM":this.ctx.globalCompositeOperation=n;break;case"SMask":this.current.activeSMask=n?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(n);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,n="smaskGroupAt"+this.groupLevel,l=this.cachedCanvases.getCanvas(n,t,e);this.suspendedCtx=this.ctx,this.ctx=l.context;const i=this.ctx;i.setTransform(...Gs(this.suspendedCtx)),Ou(this.suspendedCtx,i),Du(i,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),Ou(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;t?(t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.ceil(t[2]),t[3]=Math.ceil(t[3])):t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask,n=this.suspendedCtx;this.composeSMask(n,e,this.ctx,t),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(t,e,n,l){const i=l[0],a=l[1],s=l[2]-i,r=l[3]-a;0===s||0===r||(this.genericComposeSMask(e.context,n,s,r,e.subtype,e.backdrop,e.transferMap,i,a,e.offsetX,e.offsetY),t.save(),t.globalAlpha=1,t.globalCompositeOperation="source-over",t.setTransform(1,0,0,1,0,0),t.drawImage(n.canvas,0,0),t.restore())}genericComposeSMask(t,e,n,l,i,a,s,r,o,c,d){let u=t.canvas,h=r-c,m=o-d;if(a){const e=ns.makeHexColor(...a);if(h<0||m<0||h+n>u.width||m+l>u.height){const t=this.cachedCanvases.getCanvas("maskExtension",n,l),i=t.context;i.drawImage(u,-h,-m),i.globalCompositeOperation="destination-atop",i.fillStyle=e,i.fillRect(0,0,n,l),i.globalCompositeOperation="source-over",u=t.canvas,h=m=0}else{t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0);const i=new Path2D;i.rect(h,m,n,l),t.clip(i),t.globalCompositeOperation="destination-atop",t.fillStyle=e,t.fillRect(h,m,n,l),t.restore()}}e.save(),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0),"Alpha"===i&&s?e.filter=this.filterFactory.addAlphaFilter(s):"Luminosity"===i&&(e.filter=this.filterFactory.addLuminosityFilter(s));const U=new Path2D;U.rect(r,o,n,l),e.clip(U),e.globalCompositeOperation="destination-in",e.drawImage(u,h,m,n,l,r,o,n,l),e.restore()}save(){this.inSMaskMode?(Ou(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const t=this.current;this.stateStack.push(t),this.current=t.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode(),0!==this.stateStack.length&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),Ou(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(t,e,n,l,i,a){this.ctx.transform(t,e,n,l,i,a),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(t,e,n){const l=this.ctx,i=this.current;let a,s,r=i.x,o=i.y;const c=Gs(l),d=0===c[0]&&0===c[3]||0===c[1]&&0===c[2],u=d?n.slice(0):null;for(let h=0,m=0,U=t.length;hku&&(c=ku),this.current.fontSizeScale=e/c,this.ctx.font=`${o} ${r} ${c}px ${s}`}setTextRenderingMode(t){this.current.textRenderingMode=t}setTextRise(t){this.current.textRise=t}moveText(t,e){this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e}setLeadingMoveText(t,e){this.setLeading(-e),this.moveText(t,e)}setTextMatrix(t,e,n,l,i,a){this.current.textMatrix=[t,e,n,l,i,a],this.current.textMatrixScale=Math.hypot(t,e),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(t,e,n,l,i){const a=this.ctx,s=this.current,r=s.font,o=s.textRenderingMode,c=s.fontSize/s.fontSizeScale,d=o&Na.FILL_STROKE_MASK,u=!!(o&Na.ADD_TO_PATH_FLAG),h=s.patternFill&&!r.missingFile,m=s.patternStroke&&!r.missingFile;let U;if((r.disableFontFace||u||h||m)&&(U=r.getPathGenerator(this.commonObjs,t)),r.disableFontFace||h||m){if(a.save(),a.translate(e,n),a.scale(c,-c),d===Na.FILL||d===Na.FILL_STROKE)if(l){const t=a.getTransform();a.setTransform(...l),a.fill(na(this,qu,eh).call(this,U,t,l))}else a.fill(U);if(d===Na.STROKE||d===Na.FILL_STROKE)if(i){const t=a.getTransform();a.setTransform(...i),a.stroke(na(this,qu,eh).call(this,U,t,i))}else a.lineWidth/=c,a.stroke(U);a.restore()}else(d===Na.FILL||d===Na.FILL_STROKE)&&a.fillText(t,e,n),(d===Na.STROKE||d===Na.FILL_STROKE)&&a.strokeText(t,e,n);u&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:Gs(a),x:e,y:n,fontSize:c,path:U})}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1),t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let n=!1;for(let l=3;l0&&e[l]<255){n=!0;break}return Ca(this,"isFontSubpixelAAEnabled",n)}showText(t){const e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);const l=e.fontSize;if(0===l)return;const i=this.ctx,a=e.fontSizeScale,s=e.charSpacing,r=e.wordSpacing,o=e.fontDirection,c=e.textHScale*o,d=t.length,u=n.vertical,h=u?1:-1,m=n.defaultVMetrics,U=l*e.fontMatrix[0],p=e.textRenderingMode===Na.FILL&&!n.disableFontFace&&!e.patternFill;let F,b;if(i.save(),i.transform(...e.textMatrix),i.translate(e.x,e.y+e.textRise),o>0?i.scale(c,-1):i.scale(c,1),e.patternFill){i.save();const t=e.fillColor.getPattern(i,this,Bs(i),Nu.FILL);F=Gs(i),i.restore(),i.fillStyle=t}if(e.patternStroke){i.save();const t=e.strokeColor.getPattern(i,this,Bs(i),Nu.STROKE);b=Gs(i),i.restore(),i.strokeStyle=t}let Z=e.lineWidth;const N=e.textMatrixScale;if(0===N||0===Z){const t=e.textRenderingMode&Na.FILL_STROKE_MASK;(t===Na.STROKE||t===Na.FILL_STROKE)&&(Z=this.getSinglePixelWidth())}else Z/=N;if(1!==a&&(i.scale(a,a),Z/=a),i.lineWidth=Z,n.isInvalidPDFjsFont){const n=[];let l=0;for(const e of t)n.push(e.unicode),l+=e.width;return i.fillText(n.join(""),0,0),e.x+=l*U*c,i.restore(),void this.compose()}let R,S=0;for(R=0;R0){const t=1e3*i.measureText(Z).width/l*a;if(Qnew t(e,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};n=new Gu(e,l,this.ctx,a,i)}else n=this._getPattern(e[1],e[2]);return n}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments),this.current.patternStroke=!0}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(t,e,n){this.ctx.strokeStyle=this.current.strokeColor=ns.makeHexColor(t,e,n),this.current.patternStroke=!1}setStrokeTransparent(){this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(t,e,n){this.ctx.fillStyle=this.current.fillColor=ns.makeHexColor(t,e,n),this.current.patternFill=!1}setFillTransparent(){this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(t,e=null){let n;return this.cachedPatterns.has(t)?n=this.cachedPatterns.get(t):(n=Mu(this.getObject(t)),this.cachedPatterns.set(t,n)),e&&(n.matrix=e),n}shadingFill(t){if(!this.contentVisible)return;const e=this.ctx;this.save();const n=this._getPattern(t);e.fillStyle=n.getPattern(e,this,Bs(e),Nu.SHADING);const l=Bs(e);if(l){const{width:t,height:n}=e.canvas,[i,a,s,r]=ns.getAxialAlignedBoundingBox([0,0,t,n],l);this.ctx.fillRect(i,a,s-i,r-a)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){Ba("Should not call beginInlineImage")}beginImageData(){Ba("Should not call beginImageData")}paintFormXObjectBegin(t,e){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),t&&this.transform(...t),this.baseTransform=Gs(this.ctx),e)){const t=e[2]-e[0],n=e[3]-e[1];this.ctx.rect(e[0],e[1],t,n),this.current.updateRectMinMax(Gs(this.ctx),e),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(t){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const e=this.ctx;t.isolated||Ea("TODO: Support non-isolated groups."),t.knockout&&Ga("Knockout groups not supported.");const n=Gs(e);if(t.matrix&&e.transform(...t.matrix),!t.bbox)throw new Error("Bounding box is required.");let l=ns.getAxialAlignedBoundingBox(t.bbox,Gs(e));const i=[0,0,e.canvas.width,e.canvas.height];l=ns.intersect(l,i)||[0,0,0,0];const a=Math.floor(l[0]),s=Math.floor(l[1]),r=Math.max(Math.ceil(l[2])-a,1),o=Math.max(Math.ceil(l[3])-s,1);this.current.startNewPathAndClipBox([0,0,r,o]);let c="groupAt"+this.groupLevel;t.smask&&(c+="_smask_"+this.smaskCounter++%2);const d=this.cachedCanvases.getCanvas(c,r,o),u=d.context;u.translate(-a,-s),u.transform(...n),t.smask?this.smaskStack.push({canvas:d.canvas,context:u,offsetX:a,offsetY:s,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}):(e.setTransform(1,0,0,1,0,0),e.translate(a,s),e.save()),Ou(e,u),this.ctx=u,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++}endGroup(t){if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,n=this.groupStack.pop();if(this.ctx=n,this.ctx.imageSmoothingEnabled=!1,t.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const t=Gs(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...t);const n=ns.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],t);this.ctx.drawImage(e.canvas,0,0),this.ctx.restore(),this.compose(n)}}beginAnnotation(t,e,n,l,i){if(na(this,qu,$u).call(this),_u(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),e){const l=e[2]-e[0],a=e[3]-e[1];if(i&&this.annotationCanvasMap){n=n.slice(),n[4]-=e[0],n[5]-=e[1],e=e.slice(),e[0]=e[1]=0,e[2]=l,e[3]=a;const[i,s]=ns.singularValueDecompose2dScale(Gs(this.ctx)),{viewportScale:r}=this,o=Math.ceil(l*this.outputScaleX*r),c=Math.ceil(a*this.outputScaleY*r);this.annotationCanvas=this.canvasFactory.create(o,c);const{canvas:d,context:u}=this.annotationCanvas;this.annotationCanvasMap.set(t,d),this.annotationCanvas.savedCtx=this.ctx,this.ctx=u,this.ctx.save(),this.ctx.setTransform(i,0,0,-s,0,a*s),_u(this.ctx)}else _u(this.ctx),this.endPath(),this.ctx.rect(e[0],e[1],l,a),this.ctx.clip(),this.ctx.beginPath()}this.current=new xu(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...n),this.transform(...l)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),na(this,qu,th).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(t){if(!this.contentVisible)return;const e=t.count;t=this.getObject(t.data,t),t.count=e;const n=this.ctx,l=this.processingType3;if(l&&(void 0===l.compiled&&(l.compiled=wu(t)),l.compiled))return void l.compiled(n);const i=this._createMaskCanvas(t),a=i.canvas;n.save(),n.setTransform(1,0,0,1,0,0),n.drawImage(a,i.offsetX,i.offsetY),n.restore(),this.compose()}paintImageMaskXObjectRepeat(t,e,n=0,l=0,i,a){if(!this.contentVisible)return;t=this.getObject(t.data,t);const s=this.ctx;s.save();const r=Gs(s);s.transform(e,n,l,i,0,0);const o=this._createMaskCanvas(t);s.setTransform(1,0,0,1,o.offsetX-r[4],o.offsetY-r[5]);for(let c=0,d=a.length;ce?c/e:1,s=o>e?o/e:1}}this._cachedScaleForStroking[0]=a,this._cachedScaleForStroking[1]=s}return this._cachedScaleForStroking}rescaleAndStroke(t){const{ctx:e}=this,{lineWidth:n}=this.current,[l,i]=this.getScaleForStroking();if(e.lineWidth=n||1,1===l&&1===i)return void e.stroke();const a=e.getLineDash();if(t&&e.save(),e.scale(l,i),a.length>0){const t=Math.max(l,i);e.setLineDash(a.map((e=>e/t))),e.lineDashOffset/=t}e.stroke(),t&&e.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}};qu=new WeakSet,$u=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},th=function(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){const e=this.ctx.filter;this.ctx.filter=t,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}},eh=function(t,e,n){const l=new Path2D;return l.addPath(t,new DOMMatrix(n).invertSelf().multiplySelf(e)),l};let lh=nh;for(const gB in Qa)void 0!==lh.prototype[gB]&&(lh.prototype[Qa[gB]]=lh.prototype[gB]);var ih,ah,sh;let rh=(ih=class{static get workerPort(){return $i(this,ah)}static set workerPort(t){if(!(typeof Worker<"u"&&t instanceof Worker)&&null!==t)throw new Error("Invalid `workerPort` type.");ea(this,ah,t)}static get workerSrc(){return $i(this,sh)}static set workerSrc(t){if("string"!=typeof t)throw new Error("Invalid `workerSrc` type.");ea(this,sh,t)}},ah=new WeakMap,sh=new WeakMap,ta(ih,ah,null),ta(ih,sh,""),ih);var oh,ch;class dh{constructor({parsedData:t,rawData:e}){ta(this,oh),ta(this,ch),ea(this,oh,t),ea(this,ch,e)}getRaw(){return $i(this,ch)}get(t){return $i(this,oh).get(t)??null}getAll(){return ja($i(this,oh))}has(t){return $i(this,oh).has(t)}}oh=new WeakMap,ch=new WeakMap;const uh=Symbol("INTERNAL");var hh,mh,Uh,ph,Fh,bh,Zh,Nh,Rh,Sh;class Wh{constructor(t,{name:e,intent:n,usage:l,rbGroups:i}){ta(this,hh,!1),ta(this,mh,!1),ta(this,Uh,!1),ta(this,ph,!0),ea(this,hh,!!(t&ma.DISPLAY)),ea(this,mh,!!(t&ma.PRINT)),this.name=e,this.intent=n,this.usage=l,this.rbGroups=i}get visible(){if($i(this,Uh))return $i(this,ph);if(!$i(this,ph))return!1;const{print:t,view:e}=this.usage;return $i(this,hh)?"OFF"!==(null==e?void 0:e.viewState):!$i(this,mh)||"OFF"!==(null==t?void 0:t.printState)}_setVisible(t,e,n=!1){t!==uh&&Ba("Internal method `_setVisible` called."),ea(this,Uh,n),ea(this,ph,e)}}hh=new WeakMap,mh=new WeakMap,Uh=new WeakMap,ph=new WeakMap;class Vh{constructor(t,e=ma.DISPLAY){if(ta(this,Rh),ta(this,Fh,null),ta(this,bh,new Map),ta(this,Zh,null),ta(this,Nh,null),this.renderingIntent=e,this.name=null,this.creator=null,null!==t){this.name=t.name,this.creator=t.creator,ea(this,Nh,t.order);for(const n of t.groups)$i(this,bh).set(n.id,new Wh(e,n));if("OFF"===t.baseState)for(const t of $i(this,bh).values())t._setVisible(uh,!1);for(const e of t.on)$i(this,bh).get(e)._setVisible(uh,!0);for(const e of t.off)$i(this,bh).get(e)._setVisible(uh,!1);ea(this,Zh,this.getHash())}}isVisible(t){if(0===$i(this,bh).size)return!0;if(!t)return Ea("Optional content group not defined."),!0;if("OCG"===t.type)return $i(this,bh).has(t.id)?$i(this,bh).get(t.id).visible:(Ga(`Optional content group not found: ${t.id}`),!0);if("OCMD"===t.type){if(t.expression)return na(this,Rh,Sh).call(this,t.expression);if(!t.policy||"AnyOn"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if($i(this,bh).get(e).visible)return!0}return!1}if("AllOn"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if(!$i(this,bh).get(e).visible)return!1}return!0}if("AnyOff"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if(!$i(this,bh).get(e).visible)return!0}return!1}if("AllOff"===t.policy){for(const e of t.ids){if(!$i(this,bh).has(e))return Ga(`Optional content group not found: ${e}`),!0;if($i(this,bh).get(e).visible)return!1}return!0}return Ga(`Unknown optional content policy ${t.policy}.`),!0}return Ga(`Unknown group type ${t.type}.`),!0}setVisibility(t,e=!0,n=!0){var l;const i=$i(this,bh).get(t);if(i){if(n&&e&&i.rbGroups.length)for(const e of i.rbGroups)for(const n of e)n!==t&&(null==(l=$i(this,bh).get(n))||l._setVisible(uh,!1,!0));i._setVisible(uh,!!e,!0),ea(this,Fh,null)}else Ga(`Optional content group not found: ${t}`)}setOCGState({state:t,preserveRB:e}){let n;for(const l of t){switch(l){case"ON":case"OFF":case"Toggle":n=l;continue}const t=$i(this,bh).get(l);if(t)switch(n){case"ON":this.setVisibility(l,!0,e);break;case"OFF":this.setVisibility(l,!1,e);break;case"Toggle":this.setVisibility(l,!t.visible,e);break}}ea(this,Fh,null)}get hasInitialVisibility(){return null===$i(this,Zh)||this.getHash()===$i(this,Zh)}getOrder(){return $i(this,bh).size?$i(this,Nh)?$i(this,Nh).slice():[...$i(this,bh).keys()]:null}getGroups(){return $i(this,bh).size>0?ja($i(this,bh)):null}getGroup(t){return $i(this,bh).get(t)||null}getHash(){if(null!==$i(this,Fh))return $i(this,Fh);const t=new pd;for(const[e,n]of $i(this,bh))t.update(`${e}:${n.visible}`);return ea(this,Fh,t.hexdigest())}}Fh=new WeakMap,bh=new WeakMap,Zh=new WeakMap,Nh=new WeakMap,Rh=new WeakSet,Sh=function(t){const e=t.length;if(e<2)return!0;const n=t[0];for(let l=1;l0){const t=i instanceof Uint8Array&&i.byteLength===i.buffer.byteLength?i.buffer:new Uint8Array(i).buffer;this._queuedChunks.push(t)}this._pdfDataRangeTransport=t,this._isStreamingSupported=!n,this._isRangeSupported=!e,this._contentLength=l,this._fullRequestReader=null,this._rangeReaders=[],t.addRangeListener(((t,e)=>{this._onReceiveData({begin:t,chunk:e})})),t.addProgressListener(((t,e)=>{this._onProgress({loaded:t,total:e})})),t.addProgressiveReadListener((t=>{this._onReceiveData({chunk:t})})),t.addProgressiveDoneListener((()=>{this._onProgressiveDone()})),t.transportReady()}_onReceiveData({begin:t,chunk:e}){const n=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;if(void 0===t)this._fullRequestReader?this._fullRequestReader._enqueue(n):this._queuedChunks.push(n);else{const e=this._rangeReaders.some((function(e){return e._begin===t&&(e._enqueue(n),!0)}));Ja(e,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var t;return(null==(t=this._fullRequestReader)?void 0:t._loaded)??0}_onProgress(t){var e,n,l,i;void 0===t.total?null==(n=null==(e=this._rangeReaders[0])?void 0:e.onProgress)||n.call(e,{loaded:t.loaded}):null==(i=null==(l=this._fullRequestReader)?void 0:l.onProgress)||i.call(l,{loaded:t.loaded,total:t.total})}_onProgressiveDone(){var t;null==(t=this._fullRequestReader)||t.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){Ja(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;return this._queuedChunks=null,new yh(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new Th(this,t,e);return this._pdfDataRangeTransport.requestDataRange(t,e),this._rangeReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeReaders.slice(0))n.cancel(t);this._pdfDataRangeTransport.abort()}}class yh{constructor(t,e,n=!1,l=null){this._stream=t,this._done=n||!1,this._filename=bs(l)?l:null,this._queuedChunks=e||[],this._loaded=0;for(const i of this._queuedChunks)this._loaded+=i.byteLength;this._requests=[],this._headersReady=Promise.resolve(),t._fullRequestReader=this,this.onProgress=null}_enqueue(t){this._done||(this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunks.push(t),this._loaded+=t.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class Th{constructor(t,e,n){this._stream=t,this._begin=e,this._end=n,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function Mh(t){let e=!0,n=l("filename\\*","i").exec(t);if(n){n=n[1];let t=r(n);return t=unescape(t),t=o(t),t=c(t),a(t)}if(n=s(t),n){const t=c(n);return a(t)}if(n=l("filename","i").exec(t),n){n=n[1];let t=r(n);return t=c(t),a(t)}function l(t,e){return new RegExp("(?:^|;)\\s*"+t+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',e)}function i(t,n){if(t){if(!/^[\x00-\xFF]+$/.test(n))return n;try{const l=new TextDecoder(t,{fatal:!0}),i=Oa(n);n=l.decode(i),e=!1}catch{}}return n}function a(t){return e&&/[\x80-\xff]/.test(t)&&(t=i("utf-8",t),e&&(t=i("iso-8859-1",t))),t}function s(t){const e=[];let n;const i=l("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(n=i.exec(t));){let[,t,l,i]=n;if(t=parseInt(t,10),t in e){if(0===t)break}else e[t]=[l,i]}const a=[];for(let l=0;l{if(t._responseOrigin=Eh(e.url),!kh(e.status))throw Jh(e.status,l);this._reader=e.body.getReader(),this._headersCapability.resolve();const n=e.headers,{allowRangeRequests:i,suggestedLength:a}=Gh({responseHeaders:n,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=i,this._contentLength=a||this._contentLength,this._filename=Bh(n),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new za("Streaming is disabled."))})).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;await this._headersCapability.promise;const{value:e,done:n}=await this._reader.read();return n?{value:e,done:n}:(this._loaded+=e.byteLength,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded,total:this._contentLength}),{value:Ch(e),done:!1})}cancel(t){var e;null==(e=this._reader)||e.cancel(t),this._abortController.abort()}}class Dh{constructor(t,e,n){this._stream=t,this._reader=null,this._loaded=0;const l=t.source;this._withCredentials=l.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!l.disableStream,this._abortController=new AbortController;const i=new Headers(t.headers);i.append("Range",`bytes=${e}-${n-1}`);const a=l.url;fetch(a,Yh(i,this._withCredentials,this._abortController)).then((e=>{const n=Eh(e.url);if(n!==t._responseOrigin)throw new Error(`Expected range response-origin "${n}" to match "${t._responseOrigin}".`);if(!kh(e.status))throw Jh(e.status,a);this._readCapability.resolve(),this._reader=e.body.getReader()})).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;await this._readCapability.promise;const{value:e,done:n}=await this._reader.read();return n?{value:e,done:n}:(this._loaded+=e.byteLength,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded}),{value:Ch(e),done:!1})}cancel(t){var e;null==(e=this._reader)||e.cancel(t),this._abortController.abort()}}const fh=200,Lh=206;function wh(t){const e=t.response;return"string"!=typeof e?e:Oa(e).buffer}class xh{constructor({url:t,httpHeaders:e,withCredentials:n}){Hi(this,"_responseOrigin",null),this.url=t,this.isHttp=/^https?:/i.test(t),this.headers=gh(this.isHttp,e),this.withCredentials=n||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(t){const e=new XMLHttpRequest,n=this.currXhrId++,l=this.pendingRequests[n]={xhr:e};e.open("GET",this.url),e.withCredentials=this.withCredentials;for(const[i,a]of this.headers)e.setRequestHeader(i,a);return this.isHttp&&"begin"in t&&"end"in t?(e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`),l.expectedStatus=Lh):l.expectedStatus=fh,e.responseType="arraybuffer",Ja(t.onError,"Expected `onError` callback to be provided."),e.onerror=()=>{t.onError(e.status)},e.onreadystatechange=this.onStateChange.bind(this,n),e.onprogress=this.onProgress.bind(this,n),l.onHeadersReceived=t.onHeadersReceived,l.onDone=t.onDone,l.onError=t.onError,l.onProgress=t.onProgress,e.send(null),n}onProgress(t,e){var n;const l=this.pendingRequests[t];l&&(null==(n=l.onProgress)||n.call(l,e))}onStateChange(t,e){const n=this.pendingRequests[t];if(!n)return;const l=n.xhr;if(l.readyState>=2&&n.onHeadersReceived&&(n.onHeadersReceived(),delete n.onHeadersReceived),4!==l.readyState||!(t in this.pendingRequests))return;if(delete this.pendingRequests[t],0===l.status&&this.isHttp)return void n.onError(l.status);const i=l.status||fh;if((i!==fh||n.expectedStatus!==Lh)&&i!==n.expectedStatus)return void n.onError(l.status);const a=wh(l);if(i===Lh){const t=l.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(t);e?n.onDone({begin:parseInt(e[1],10),chunk:a}):(Ga('Missing or invalid "Content-Range" header.'),n.onError(0))}else a?n.onDone({begin:0,chunk:a}):n.onError(l.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t],e.abort()}}class zh{constructor(t){this._source=t,this._manager=new xh(t),this._rangeChunkSize=t.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){return Ja(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new vh(this._manager,this._source),this._fullRequestReader}getRangeReader(t,e){const n=new Oh(this._manager,t,e);return n.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeRequestReaders.slice(0))n.cancel(t)}}class vh{constructor(t,e){this._manager=t,this._url=e.url,this._fullRequestId=t.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=e.disableRange||!1,this._contentLength=e.length,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t);this._manager._responseOrigin=Eh(e.responseURL);const n=e.getAllResponseHeaders(),l=new Headers(n?n.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map((t=>{const[e,...n]=t.split(": ");return[e,n.join(": ")]})):[]),{allowRangeRequests:i,suggestedLength:a}=Gh({responseHeaders:l,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});i&&(this._isRangeSupported=!0),this._contentLength=a||this._contentLength,this._filename=Bh(l),this._isRangeSupported&&this._manager.abortRequest(t),this._headersCapability.resolve()}_onDone(t){if(t&&(this._requests.length>0?this._requests.shift().resolve({value:t.chunk,done:!1}):this._cachedChunks.push(t.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=Jh(t,this._url),this._headersCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(t){var e;null==(e=this.onProgress)||e.call(this,{loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0,this._headersCapability.reject(t);for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class Oh{constructor(t,e,n){this._manager=t,this._url=t.url,this._requestId=t.request({begin:e,end:n,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var t;const e=Eh(null==(t=this._manager.getRequestXhr(this._requestId))?void 0:t.responseURL);e!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${e}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var t;null==(t=this.onClosed)||t.call(this,this)}_onDone(t){const e=t.chunk;this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0;for(const n of this._requests)n.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(t){this._storedError??(this._storedError=Jh(t,this._url));for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(t){var e;this.isStreamingSupported||null==(e=this.onProgress)||e.call(this,{loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=Promise.withResolvers();return this._requests.push(t),t.promise}cancel(t){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const _h=/^[a-z][a-z0-9\-+.]+:/i;function jh(t){if(_h.test(t))return new URL(t);const e=process.getBuiltinModule("url");return new URL(e.pathToFileURL(t))}class Kh{constructor(t){this.source=t,this.url=jh(t.url),Ja("file:"===this.url.protocol,"PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var t;return(null==(t=this._fullRequestReader)?void 0:t._loaded)??0}getFullReader(){return Ja(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new Ph(this),this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new Ah(this,t,e);return this._rangeRequestReaders.push(n),n}cancelAllRequests(t){var e;null==(e=this._fullRequestReader)||e.cancel(t);for(const n of this._rangeRequestReaders.slice(0))n.cancel(t)}}class Ph{constructor(t){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null;const e=t.source;this._contentLength=e.length,this._loaded=0,this._filename=null,this._disableRange=e.disableRange||!1,this._rangeChunkSize=e.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const n=process.getBuiltinModule("fs");n.promises.lstat(this._url).then((t=>{this._contentLength=t.size,this._setReadableStream(n.createReadStream(this._url)),this._headersCapability.resolve()}),(t=>{"ENOENT"===t.code&&(t=new La(`Missing PDF "${this._url}".`)),this._storedError=t,this._headersCapability.reject(t)}))}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();return null===e?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=e.length,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(e).buffer,done:!1})}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",(()=>{this._readCapability.resolve()})),t.on("end",(()=>{t.destroy(),this._done=!0,this._readCapability.resolve()})),t.on("error",(t=>{this._error(t)})),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new za("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class Ah{constructor(t,e,n){this._url=t.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const l=t.source;this._isStreamingSupported=!l.disableStream;const i=process.getBuiltinModule("fs");this._setReadableStream(i.createReadStream(this._url,{start:e,end:n-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var t;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();return null===e?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=e.length,null==(t=this.onProgress)||t.call(this,{loaded:this._loaded}),{value:new Uint8Array(e).buffer,done:!1})}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t,this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t,t.on("readable",(()=>{this._readCapability.resolve()})),t.on("end",(()=>{t.destroy(),this._done=!0,this._readCapability.resolve()})),t.on("error",(t=>{this._error(t)})),this._storedError&&this._readableStream.destroy(this._storedError)}}const Hh=1e5,qh=30,$h=.8;var tm,em,nm,lm,im,am,sm,rm,om,cm,dm,um,hm,mm,Um,pm,Fm,bm,Zm,Nm,Rm,Sm,Wm,Vm,Qm,ym,Tm,Mm,gm,Em,Gm,Bm,Jm,km;let Ym=(Nm=class{constructor({textContentSource:t,container:e,viewport:n}){var l;if(ta(this,ym),ta(this,em,Promise.withResolvers()),ta(this,nm,null),ta(this,lm,!1),ta(this,im,!(null==(tm=globalThis.FontInspector)||!tm.enabled)),ta(this,am,null),ta(this,sm,null),ta(this,rm,0),ta(this,om,0),ta(this,cm,null),ta(this,dm,null),ta(this,um,0),ta(this,hm,0),ta(this,mm,Object.create(null)),ta(this,Um,[]),ta(this,pm,null),ta(this,Fm,[]),ta(this,bm,new WeakMap),ta(this,Zm,null),t instanceof ReadableStream)ea(this,pm,t);else{if("object"!=typeof t)throw new Error('No "textContentSource" parameter specified.');ea(this,pm,new ReadableStream({start(e){e.enqueue(t),e.close()}}))}ea(this,nm,ea(this,dm,e)),ea(this,hm,n.scale*(globalThis.devicePixelRatio||1)),ea(this,um,n.rotation),ea(this,sm,{div:null,properties:null,ctx:null});const{pageWidth:i,pageHeight:a,pageX:s,pageY:r}=n.rawDims;ea(this,Zm,[1,0,0,-1,-s,r+a]),ea(this,om,i),ea(this,rm,a),na(l=Nm,Em,Jm).call(l),Js(e,n),$i(this,em).promise.finally((()=>{$i(Nm,Qm).delete(this),ea(this,sm,null),ea(this,mm,null)})).catch((()=>{}))}static get fontFamilyMap(){const{isWindows:t,isFirefox:e}=Aa.platform;return Ca(this,"fontFamilyMap",new Map([["sans-serif",(t&&e?"Calibri, ":"")+"sans-serif"],["monospace",(t&&e?"Lucida Console, ":"")+"monospace"]]))}render(){const t=()=>{$i(this,cm).read().then((({value:e,done:n})=>{n?$i(this,em).resolve():($i(this,am)??ea(this,am,e.lang),Object.assign($i(this,mm),e.styles),na(this,ym,Tm).call(this,e.items),t())}),$i(this,em).reject)};return ea(this,cm,$i(this,pm).getReader()),$i(Nm,Qm).add(this),t(),$i(this,em).promise}update({viewport:t,onBefore:e=null}){var n;const l=t.scale*(globalThis.devicePixelRatio||1),i=t.rotation;if(i!==$i(this,um)&&(null==e||e(),ea(this,um,i),Js($i(this,dm),{rotation:i})),l!==$i(this,hm)){null==e||e(),ea(this,hm,l);const t={div:null,properties:null,ctx:na(n=Nm,Em,Gm).call(n,$i(this,am))};for(const e of $i(this,Fm))t.properties=$i(this,bm).get(e),t.div=e,na(this,ym,gm).call(this,t)}}cancel(){var t;const e=new za("TextLayer task cancelled.");null==(t=$i(this,cm))||t.cancel(e).catch((()=>{})),ea(this,cm,null),$i(this,em).reject(e)}get textDivs(){return $i(this,Fm)}get textContentItemsStr(){return $i(this,Um)}static cleanup(){if(!($i(this,Qm).size>0)){$i(this,Rm).clear();for(const{canvas:t}of $i(this,Sm).values())t.remove();$i(this,Sm).clear()}}},em=new WeakMap,nm=new WeakMap,lm=new WeakMap,im=new WeakMap,am=new WeakMap,sm=new WeakMap,rm=new WeakMap,om=new WeakMap,cm=new WeakMap,dm=new WeakMap,um=new WeakMap,hm=new WeakMap,mm=new WeakMap,Um=new WeakMap,pm=new WeakMap,Fm=new WeakMap,bm=new WeakMap,Zm=new WeakMap,Rm=new WeakMap,Sm=new WeakMap,Wm=new WeakMap,Vm=new WeakMap,Qm=new WeakMap,ym=new WeakSet,Tm=function(t){var e,n;if($i(this,lm))return;(n=$i(this,sm)).ctx??(n.ctx=na(e=Nm,Em,Gm).call(e,$i(this,am)));const l=$i(this,Fm),i=$i(this,Um);for(const a of t){if(l.length>Hh)return Ga("Ignoring additional textDivs for performance reasons."),void ea(this,lm,!0);if(void 0!==a.str)i.push(a.str),na(this,ym,Mm).call(this,a);else if("beginMarkedContentProps"===a.type||"beginMarkedContent"===a.type){const t=$i(this,nm);ea(this,nm,document.createElement("span")),$i(this,nm).classList.add("markedContent"),null!==a.id&&$i(this,nm).setAttribute("id",`${a.id}`),t.append($i(this,nm))}else"endMarkedContent"===a.type&&ea(this,nm,$i(this,nm).parentNode)}},Mm=function(t){var e;const n=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==t.str,hasEOL:t.hasEOL,fontSize:0};$i(this,Fm).push(n);const i=ns.transform($i(this,Zm),t.transform);let a=Math.atan2(i[1],i[0]);const s=$i(this,mm)[t.fontName];s.vertical&&(a+=Math.PI/2);let r=$i(this,im)&&s.fontSubstitution||s.fontFamily;r=Nm.fontFamilyMap.get(r)||r;const o=Math.hypot(i[2],i[3]),c=o*na(e=Nm,Em,km).call(e,r,$i(this,am));let d,u;0===a?(d=i[4],u=i[5]-c):(d=i[4]+c*Math.sin(a),u=i[5]-c*Math.cos(a));const h="calc(var(--scale-factor)*",m=n.style;$i(this,nm)===$i(this,dm)?(m.left=`${(100*d/$i(this,om)).toFixed(2)}%`,m.top=`${(100*u/$i(this,rm)).toFixed(2)}%`):(m.left=`${h}${d.toFixed(2)}px)`,m.top=`${h}${u.toFixed(2)}px)`),m.fontSize=`${h}${($i(Nm,Vm)*o).toFixed(2)}px)`,m.fontFamily=r,l.fontSize=o,n.setAttribute("role","presentation"),n.textContent=t.str,n.dir=t.dir,$i(this,im)&&(n.dataset.fontName=s.fontSubstitutionLoadedName||t.fontName),0!==a&&(l.angle=a*(180/Math.PI));let U=!1;if(t.str.length>1)U=!0;else if(" "!==t.str&&t.transform[0]!==t.transform[3]){const e=Math.abs(t.transform[0]),n=Math.abs(t.transform[3]);e!==n&&Math.max(e,n)/Math.min(e,n)>1.5&&(U=!0)}if(U&&(l.canvasWidth=s.vertical?t.height:t.width),$i(this,bm).set(n,l),$i(this,sm).div=n,$i(this,sm).properties=l,na(this,ym,gm).call(this,$i(this,sm)),l.hasText&&$i(this,nm).append(n),l.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation"),$i(this,nm).append(t)}},gm=function(t){var e;const{div:n,properties:l,ctx:i}=t,{style:a}=n;let s="";if($i(Nm,Vm)>1&&(s=`scale(${1/$i(Nm,Vm)})`),0!==l.canvasWidth&&l.hasText){const{fontFamily:t}=a,{canvasWidth:r,fontSize:o}=l;na(e=Nm,Em,Bm).call(e,i,o*$i(this,hm),t);const{width:c}=i.measureText(n.textContent);c>0&&(s=`scaleX(${r*$i(this,hm)/c}) ${s}`)}0!==l.angle&&(s=`rotate(${l.angle}deg) ${s}`),s.length>0&&(a.transform=s)},Em=new WeakSet,Gm=function(t=null){let e=$i(this,Sm).get(t||(t=""));if(!e){const n=document.createElement("canvas");n.className="hiddenCanvasElement",n.lang=t,document.body.append(n),e=n.getContext("2d",{alpha:!1,willReadFrequently:!0}),$i(this,Sm).set(t,e),$i(this,Wm).set(e,{size:0,family:""})}return e},Bm=function(t,e,n){const l=$i(this,Wm).get(t);e===l.size&&n===l.family||(t.font=`${e}px ${n}`,l.size=e,l.family=n)},Jm=function(){if(null!==$i(this,Vm))return;const t=document.createElement("div");t.style.opacity=0,t.style.lineHeight=1,t.style.fontSize="1px",t.style.position="absolute",t.textContent="X",document.body.append(t),ea(this,Vm,t.getBoundingClientRect().height),t.remove()},km=function(t,e){const n=$i(this,Rm).get(t);if(n)return n;const l=na(this,Em,Gm).call(this,e);l.canvas.width=l.canvas.height=qh,na(this,Em,Bm).call(this,l,qh,t);const i=l.measureText("");let a=i.fontBoundingBoxAscent,s=Math.abs(i.fontBoundingBoxDescent);if(a){const e=a/(a+s);return $i(this,Rm).set(t,e),l.canvas.width=l.canvas.height=0,e}l.strokeStyle="red",l.clearRect(0,0,qh,qh),l.strokeText("g",0,0);let r=l.getImageData(0,0,qh,qh).data;s=0;for(let c=r.length-1-3;c>=0;c-=4)if(r[c]>0){s=Math.ceil(c/4/qh);break}l.clearRect(0,0,qh,qh),l.strokeText("A",0,qh),r=l.getImageData(0,0,qh,qh).data,a=0;for(let c=0,d=r.length;c0){a=qh-Math.floor(c/4/qh);break}l.canvas.width=l.canvas.height=0;const o=a?a/(a+s):$h;return $i(this,Rm).set(t,o),o},ta(Nm,Em),ta(Nm,Rm,new Map),ta(Nm,Sm,new Map),ta(Nm,Wm,new WeakMap),ta(Nm,Vm,null),ta(Nm,Qm,new Set),Nm);class Cm{static textContent(t){const e=[],n={items:e,styles:Object.create(null)};function l(t){var n;if(!t)return;let i=null;const a=t.name;if("#text"===a)i=t.value;else{if(!Cm.shouldBuildText(a))return;null!=(n=null==t?void 0:t.attributes)&&n.textContent?i=t.attributes.textContent:t.value&&(i=t.value)}if(null!==i&&e.push({str:i}),t.children)for(const e of t.children)l(e)}return l(t),n}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}const Xm=65536,Im=100,Dm=5e3,fm=oa?Fu:ru,Lm=oa?bu:cu,wm=oa?pu:uu,xm=oa?Zu:mu;function zm(t={}){"string"==typeof t||t instanceof URL?t={url:t}:(t instanceof ArrayBuffer||ArrayBuffer.isView(t))&&(t={data:t});const e=new Pm,{docId:n}=e,l=t.url?vm(t.url):null,i=t.data?Om(t.data):null,a=t.httpHeaders||null,s=!0===t.withCredentials,r=t.password??null,o=t.range instanceof Am?t.range:null,c=Number.isInteger(t.rangeChunkSize)&&t.rangeChunkSize>0?t.rangeChunkSize:Xm;let d=t.worker instanceof pU?t.worker:null;const u=t.verbosity,h="string"!=typeof t.docBaseUrl||Fs(t.docBaseUrl)?null:t.docBaseUrl,m="string"==typeof t.cMapUrl?t.cMapUrl:null,U=!1!==t.cMapPacked,p=t.CMapReaderFactory||Lm,F="string"==typeof t.standardFontDataUrl?t.standardFontDataUrl:null,b=t.StandardFontDataFactory||xm,Z=!0!==t.stopAtErrors,N=Number.isInteger(t.maxImageSize)&&t.maxImageSize>-1?t.maxImageSize:-1,R=!1!==t.isEvalSupported,S="boolean"==typeof t.isOffscreenCanvasSupported?t.isOffscreenCanvasSupported:!oa,W="boolean"==typeof t.isImageDecoderSupported?t.isImageDecoderSupported:!oa&&(Aa.platform.isFirefox||!globalThis.chrome),V=Number.isInteger(t.canvasMaxAreaInBytes)?t.canvasMaxAreaInBytes:-1,Q="boolean"==typeof t.disableFontFace?t.disableFontFace:oa,y=!0===t.fontExtraProperties,T=!0===t.enableXfa,M=t.ownerDocument||globalThis.document,g=!0===t.disableRange,E=!0===t.disableStream,G=!0===t.disableAutoFetch,B=!0===t.pdfBug,J=t.CanvasFactory||fm,k=t.FilterFactory||wm,Y=!0===t.enableHWA,C=o?o.length:t.length??NaN,X="boolean"==typeof t.useSystemFonts?t.useSystemFonts:!oa&&!Q,I="boolean"==typeof t.useWorkerFetch?t.useWorkerFetch:p===cu&&b===mu&&m&&F&&Ss(m,document.baseURI)&&Ss(F,document.baseURI),D=null;Ma(u);const f={canvasFactory:new J({ownerDocument:M,enableHWA:Y}),filterFactory:new k({docId:n,ownerDocument:M}),cMapReaderFactory:I?null:new p({baseUrl:m,isCompressed:U}),standardFontDataFactory:I?null:new b({baseUrl:F})};if(!d){const t={verbosity:u,port:rh.workerPort};d=t.port?pU.fromPort(t):new pU(t),e._worker=d}const L={docId:n,apiVersion:"4.10.38",data:i,password:r,disableAutoFetch:G,rangeChunkSize:c,length:C,docBaseUrl:h,enableXfa:T,evaluatorOptions:{maxImageSize:N,disableFontFace:Q,ignoreErrors:Z,isEvalSupported:R,isOffscreenCanvasSupported:S,isImageDecoderSupported:W,canvasMaxAreaInBytes:V,fontExtraProperties:y,useSystemFonts:X,cMapUrl:I?m:null,standardFontDataUrl:I?F:null}},w={disableFontFace:Q,fontExtraProperties:y,ownerDocument:M,pdfBug:B,styleElement:D,loadingParams:{disableAutoFetch:G,enableXfa:T}};return d.promise.then((function(){if(e.destroyed)throw new Error("Loading aborted");if(d.destroyed)throw new Error("Worker was destroyed");const t=d.messageHandler.sendWithPromise("GetDocRequest",L,i?[i.buffer]:null);let r;if(o)r=new Qh(o,{disableRange:g,disableStream:E});else if(!i){if(!l)throw new Error("getDocument - no `url` parameter provided.");let t;if(oa)if(Ss(l)){if(typeof fetch>"u"||typeof Response>"u"||!("body"in Response.prototype))throw new Error("getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.");t=Xh}else t=Kh;else t=Ss(l)?Xh:zh;r=new t({url:l,length:C,httpHeaders:a,withCredentials:s,rangeChunkSize:c,disableRange:g,disableStream:E})}return t.then((t=>{if(e.destroyed)throw new Error("Loading aborted");if(d.destroyed)throw new Error("Worker was destroyed");const l=new au(n,t,d.port),i=new VU(l,e,r,w,f);e._transport=i,l.send("Ready",null)}))})).catch(e._capability.reject),e}function vm(t){if(t instanceof URL)return t.href;try{return new URL(t,window.location).href}catch{if(oa&&"string"==typeof t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function Om(t){if(oa&&typeof Buffer<"u"&&t instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength)return t;if("string"==typeof t)return Oa(t);if(t instanceof ArrayBuffer||ArrayBuffer.isView(t)||"object"==typeof t&&!isNaN(null==t?void 0:t.length))return new Uint8Array(t);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function _m(t){return"object"==typeof t&&Number.isInteger(null==t?void 0:t.num)&&t.num>=0&&Number.isInteger(null==t?void 0:t.gen)&&t.gen>=0}var jm;const Km=class t{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId="d"+la(t,jm)._++,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){var t,e,n,l;this.destroyed=!0;try{null!=(t=this._worker)&&t.port&&(this._worker._pendingDestroy=!0),await(null==(e=this._transport)?void 0:e.destroy())}catch(i){throw null!=(n=this._worker)&&n.port&&delete this._worker._pendingDestroy,i}this._transport=null,null==(l=this._worker)||l.destroy(),this._worker=null}};jm=new WeakMap,ta(Km,jm,0);let Pm=Km,Am=class{constructor(t,e,n=!1,l=null){this.length=t,this.initialData=e,this.progressiveDone=n,this.contentDispositionFilename=l,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(t){this._rangeListeners.push(t)}addProgressListener(t){this._progressListeners.push(t)}addProgressiveReadListener(t){this._progressiveReadListeners.push(t)}addProgressiveDoneListener(t){this._progressiveDoneListeners.push(t)}onDataRange(t,e){for(const n of this._rangeListeners)n(t,e)}onDataProgress(t,e){this._readyCapability.promise.then((()=>{for(const n of this._progressListeners)n(t,e)}))}onDataProgressiveRead(t){this._readyCapability.promise.then((()=>{for(const e of this._progressiveReadListeners)e(t)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const t of this._progressiveDoneListeners)t()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(t,e){Ba("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class Hm{constructor(t,e){this._pdfInfo=t,this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return Ca(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getOptionalContentConfig(e)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(t=!1){return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(t){return this._transport.cachedPageNumber(t)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var qm,$m,tU,eU,nU,lU,iU,aU,sU,rU,oU,cU,dU,uU,hU;class mU{constructor(t,e,n,l=!1){ta(this,tU),ta(this,qm,null),ta(this,$m,!1),this._pageIndex=t,this._pageInfo=e,this._transport=n,this._stats=l?new Rs:null,this._pdfBug=l,this.commonObjs=n.commonObjs,this.objs=new BU,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:t,rotation:e=this.rotate,offsetX:n=0,offsetY:l=0,dontFlip:i=!1}={}){return new Us({viewBox:this.view,userUnit:this.userUnit,scale:t,rotation:e,offsetX:n,offsetY:l,dontFlip:i})}getAnnotations({intent:t="display"}={}){const{renderingIntent:e}=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return Ca(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var t;return(null==(t=this._transport._htmlForXfa)?void 0:t.children[this._pageIndex])||null}render({canvasContext:t,viewport:e,intent:n="display",annotationMode:l=Ua.ENABLE,transform:i=null,background:a=null,optionalContentConfigPromise:s=null,annotationCanvasMap:r=null,pageColors:o=null,printAnnotationStorage:c=null,isEditing:d=!1}){var u,h;null==(u=this._stats)||u.time("Overall");const m=this._transport.getRenderingIntent(n,l,c,d),{renderingIntent:U,cacheKey:p}=m;ea(this,$m,!1),na(this,tU,nU).call(this),s||(s=this._transport.getOptionalContentConfig(U));let F=this._intentStates.get(p);F||(F=Object.create(null),this._intentStates.set(p,F)),F.streamReaderCancelTimeout&&(clearTimeout(F.streamReaderCancelTimeout),F.streamReaderCancelTimeout=null);const b=!!(U&ma.PRINT);F.displayReadyCapability||(F.displayReadyCapability=Promise.withResolvers(),F.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null==(h=this._stats)||h.time("Page Request"),this._pumpOperatorList(m));const Z=t=>{var e;F.renderTasks.delete(N),(this._maybeCleanupAfterRender||b)&&ea(this,$m,!0),na(this,tU,eU).call(this,!b),t?(N.capability.reject(t),this._abortOperatorList({intentState:F,reason:t instanceof Error?t:new Error(t)})):N.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),null!=(e=globalThis.Stats)&&e.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},N=new YU({callback:Z,params:{canvasContext:t,viewport:e,transform:i,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:r,operatorList:F.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!b,pdfBug:this._pdfBug,pageColors:o});(F.renderTasks||(F.renderTasks=new Set)).add(N);const R=N.task;return Promise.all([F.displayReadyCapability.promise,s]).then((([t,e])=>{var n;if(this.destroyed)Z();else{if(null==(n=this._stats)||n.time("Rendering"),!(e.renderingIntent&U))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");N.initializeGraphics({transparency:t,optionalContentConfig:e}),N.operatorListChanged()}})).catch(Z),R}getOperatorList({intent:t="display",annotationMode:e=Ua.ENABLE,printAnnotationStorage:n=null,isEditing:l=!1}={}){var i;function a(){o.operatorList.lastChunk&&(o.opListReadCapability.resolve(o.operatorList),o.renderTasks.delete(r))}const s=this._transport.getRenderingIntent(t,e,n,l,!0);let r,o=this._intentStates.get(s.cacheKey);return o||(o=Object.create(null),this._intentStates.set(s.cacheKey,o)),o.opListReadCapability||(r=Object.create(null),r.operatorListChanged=a,o.opListReadCapability=Promise.withResolvers(),(o.renderTasks||(o.renderTasks=new Set)).add(r),o.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},null==(i=this._stats)||i.time("Page Request"),this._pumpOperatorList(s)),o.opListReadCapability.promise}streamTextContent({includeMarkedContent:t=!1,disableNormalization:e=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size(t){return t.items.length}})}getTextContent(t={}){if(this._transport._htmlForXfa)return this.getXfa().then((t=>Cm.textContent(t)));const e=this.streamTextContent(t);return new Promise((function(t,n){function l(){i.read().then((function({value:e,done:n}){n?t(a):(a.lang??(a.lang=e.lang),Object.assign(a.styles,e.styles),a.items.push(...e.items),l())}),n)}const i=e.getReader(),a={items:[],styles:Object.create(null),lang:null};l()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values())if(this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0}),!e.opListReadCapability)for(const n of e.renderTasks)t.push(n.completed),n.cancel();return this.objs.clear(),ea(this,$m,!1),na(this,tU,nU).call(this),Promise.all(t)}cleanup(t=!1){ea(this,$m,!0);const e=na(this,tU,eU).call(this,!1);return t&&e&&this._stats&&(this._stats=new Rs),e}_startRenderPage(t,e){var n,l;const i=this._intentStates.get(e);i&&(null==(n=this._stats)||n.timeEnd("Page Request"),null==(l=i.displayReadyCapability)||l.resolve(t))}_renderPageChunk(t,e){for(let n=0,l=t.length;n{s.read().then((({value:t,done:e})=>{e?r.streamReader=null:this._transport.destroyed||(this._renderPageChunk(t,r),o())}),(t=>{if(r.streamReader=null,!this._transport.destroyed){if(r.operatorList){r.operatorList.lastChunk=!0;for(const t of r.renderTasks)t.operatorListChanged();na(this,tU,eU).call(this,!0)}if(r.displayReadyCapability)r.displayReadyCapability.reject(t);else{if(!r.opListReadCapability)throw t;r.opListReadCapability.reject(t)}}}))};o()}_abortOperatorList({intentState:t,reason:e,force:n=!1}){if(t.streamReader){if(t.streamReaderCancelTimeout&&(clearTimeout(t.streamReaderCancelTimeout),t.streamReaderCancelTimeout=null),!n){if(t.renderTasks.size>0)return;if(e instanceof ps){let n=Im;return e.extraDelay>0&&e.extraDelay<1e3&&(n+=e.extraDelay),void(t.streamReaderCancelTimeout=setTimeout((()=>{t.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:t,reason:e,force:!0})}),n))}}if(t.streamReader.cancel(new za(e.message)).catch((()=>{})),t.streamReader=null,!this._transport.destroyed){for(const[e,n]of this._intentStates)if(n===t){this._intentStates.delete(e);break}this.cleanup()}}}get stats(){return this._stats}}qm=new WeakMap,$m=new WeakMap,tU=new WeakSet,eU=function(t=!1){if(na(this,tU,nU).call(this),!$i(this,$m)||this.destroyed)return!1;if(t)return ea(this,qm,setTimeout((()=>{ea(this,qm,null),na(this,tU,eU).call(this,!1)}),Dm)),!1;for(const{renderTasks:e,operatorList:n}of this._intentStates.values())if(e.size>0||!n.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),ea(this,$m,!1),!0},nU=function(){$i(this,qm)&&(clearTimeout($i(this,qm)),ea(this,qm,null))};class UU{constructor(){ta(this,lU,new Map),ta(this,iU,Promise.resolve())}postMessage(t,e){const n={data:structuredClone(t,e?{transfer:e}:null)};$i(this,iU).then((()=>{for(const[t]of $i(this,lU))t.call(this,n)}))}addEventListener(t,e,n=null){let l=null;if((null==n?void 0:n.signal)instanceof AbortSignal){const{signal:i}=n;if(i.aborted)return void Ga("LoopbackPort - cannot use an `aborted` signal.");const a=()=>this.removeEventListener(t,e);l=()=>i.removeEventListener("abort",a),i.addEventListener("abort",a)}$i(this,lU).set(e,l)}removeEventListener(t,e){const n=$i(this,lU).get(e);null==n||n(),$i(this,lU).delete(e)}terminate(){for(const[,t]of $i(this,lU))null==t||t();$i(this,lU).clear()}}lU=new WeakMap,iU=new WeakMap;let pU=(aU=class{constructor({name:t=null,port:e=null,verbosity:n=ga()}={}){var l;if(ta(this,cU),this.name=t,this.destroyed=!1,this.verbosity=n,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,e){if(null!=(l=$i(aU,oU))&&l.has(e))throw new Error("Cannot use more than one PDFWorker per port.");return($i(aU,oU)||ea(aU,oU,new WeakMap)).set(e,this),void this._initializeFromPort(e)}this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(t){this._port=t,this._messageHandler=new au("main","worker",t),this._messageHandler.on("ready",(function(){})),na(this,cU,dU).call(this)}_initialize(){if($i(aU,rU)||$i(aU,uU,hU))return void this._setupFakeWorker();let{workerSrc:t}=aU;try{aU._isSameOrigin(window.location.href,t)||(t=aU._createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t,{type:"module"}),n=new au("main","worker",e),l=()=>{i.abort(),n.destroy(),e.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},i=new AbortController;e.addEventListener("error",(()=>{this._webWorker||l()}),{signal:i.signal}),n.on("test",(t=>{i.abort(),!this.destroyed&&t?(this._messageHandler=n,this._port=e,this._webWorker=e,na(this,cU,dU).call(this)):l()})),n.on("ready",(t=>{if(i.abort(),this.destroyed)l();else try{a()}catch{this._setupFakeWorker()}}));const a=()=>{const t=new Uint8Array;n.send("test",t,[t.buffer])};return void a()}catch{Ea("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){$i(aU,rU)||(Ga("Setting up fake worker."),ea(aU,rU,!0)),aU._setupFakeWorkerGlobal.then((t=>{if(this.destroyed)return void this._readyCapability.reject(new Error("Worker was destroyed"));const e=new UU;this._port=e;const n="fake"+la(aU,sU)._++,l=new au(n+"_worker",n,e);t.setup(l,e),this._messageHandler=new au(n,n+"_worker",e),na(this,cU,dU).call(this)})).catch((t=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`))}))}destroy(){var t,e,n;this.destroyed=!0,null==(t=this._webWorker)||t.terminate(),this._webWorker=null,null==(e=$i(aU,oU))||e.delete(this._port),this._port=null,null==(n=this._messageHandler)||n.destroy(),this._messageHandler=null}static fromPort(t){var e;if(null==t||!t.port)throw new Error("PDFWorker.fromPort - invalid method signature.");const n=null==(e=$i(this,oU))?void 0:e.get(t.port);if(n){if(n._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return n}return new aU(t)}static get workerSrc(){if(rh.workerSrc)return rh.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Ca(this,"_setupFakeWorkerGlobal",(async()=>$i(this,uU,hU)?$i(this,uU,hU):(await import(this.workerSrc)).WorkerMessageHandler)())}},sU=new WeakMap,rU=new WeakMap,oU=new WeakMap,cU=new WeakSet,dU=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},uU=new WeakSet,hU=function(){var t;try{return(null==(t=globalThis.pdfjsWorker)?void 0:t.WorkerMessageHandler)||null}catch{return null}},ta(aU,uU),ta(aU,sU,0),ta(aU,rU,!1),ta(aU,oU),oa&&(ea(aU,rU,!0),rh.workerSrc||(rh.workerSrc="./pdf.worker.mjs")),aU._isSameOrigin=(t,e)=>{let n;try{if(n=new URL(t),!n.origin||"null"===n.origin)return!1}catch{return!1}const l=new URL(e,n);return n.origin===l.origin},aU._createCDNWrapper=t=>{const e=`await import("${t}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},aU);var FU,bU,ZU,NU,RU,SU,WU;class VU{constructor(t,e,n,l,i){ta(this,SU),ta(this,FU,new Map),ta(this,bU,new Map),ta(this,ZU,new Map),ta(this,NU,new Map),ta(this,RU,null),this.messageHandler=t,this.loadingTask=e,this.commonObjs=new BU,this.fontLoader=new Td({ownerDocument:l.ownerDocument,styleElement:l.styleElement}),this.loadingParams=l.loadingParams,this._params=l,this.canvasFactory=i.canvasFactory,this.filterFactory=i.filterFactory,this.cMapReaderFactory=i.cMapReaderFactory,this.standardFontDataFactory=i.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=n,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return Ca(this,"annotationStorage",new Qd)}getRenderingIntent(t,e=Ua.ENABLE,n=null,l=!1,i=!1){let a=ma.DISPLAY,s=Fd;switch(t){case"any":a=ma.ANY;break;case"display":break;case"print":a=ma.PRINT;break;default:Ga(`getRenderingIntent - invalid intent: ${t}`)}const r=a&ma.PRINT&&n instanceof yd?n:this.annotationStorage;switch(e){case Ua.DISABLE:a+=ma.ANNOTATIONS_DISABLE;break;case Ua.ENABLE:break;case Ua.ENABLE_FORMS:a+=ma.ANNOTATIONS_FORMS;break;case Ua.ENABLE_STORAGE:a+=ma.ANNOTATIONS_STORAGE,s=r.serializable;break;default:Ga(`getRenderingIntent - invalid annotationMode: ${e}`)}l&&(a+=ma.IS_EDITING),i&&(a+=ma.OPLIST);const{ids:o,hash:c}=r.modifiedIds,d=[a,s.hash,c];return{renderingIntent:a,cacheKey:d.join("_"),annotationStorageSerializable:s,modifiedIds:o}}destroy(){var t;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),null==(t=$i(this,RU))||t.reject(new Error("Worker was destroyed during onPassword callback"));const e=[];for(const l of $i(this,bU).values())e.push(l._destroy());$i(this,bU).clear(),$i(this,ZU).clear(),$i(this,NU).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const n=this.messageHandler.sendWithPromise("Terminate",null);return e.push(n),Promise.all(e).then((()=>{var t,e;this.commonObjs.clear(),this.fontLoader.clear(),$i(this,FU).clear(),this.filterFactory.destroy(),Ym.cleanup(),null==(t=this._networkStream)||t.cancelAllRequests(new za("Worker was terminated.")),null==(e=this.messageHandler)||e.destroy(),this.messageHandler=null,this.destroyCapability.resolve()}),this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",((t,e)=>{Ja(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}},e.onPull=()=>{this._fullReader.read().then((function({value:t,done:n}){n?e.close():(Ja(t instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),e.enqueue(new Uint8Array(t),1,[t]))})).catch((t=>{e.error(t)}))},e.onCancel=t=>{this._fullReader.cancel(t),e.ready.catch((t=>{if(!this.destroyed)throw t}))}})),t.on("ReaderHeadersReady",(async t=>{var n;await this._fullReader.headersReady;const{isStreamingSupported:l,isRangeSupported:i,contentLength:a}=this._fullReader;return(!l||!i)&&(this._lastProgress&&(null==(n=e.onProgress)||n.call(e,this._lastProgress)),this._fullReader.onProgress=t=>{var n;null==(n=e.onProgress)||n.call(e,{loaded:t.loaded,total:t.total})}),{isStreamingSupported:l,isRangeSupported:i,contentLength:a}})),t.on("GetRangeReader",((t,e)=>{Ja(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const n=this._networkStream.getRangeReader(t.begin,t.end);n?(e.onPull=()=>{n.read().then((function({value:t,done:n}){n?e.close():(Ja(t instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),e.enqueue(new Uint8Array(t),1,[t]))})).catch((t=>{e.error(t)}))},e.onCancel=t=>{n.cancel(t),e.ready.catch((t=>{if(!this.destroyed)throw t}))}):e.close()})),t.on("GetDoc",(({pdfInfo:t})=>{this._numPages=t.numPages,this._htmlForXfa=t.htmlForXfa,delete t.htmlForXfa,e._capability.resolve(new Hm(t,this))})),t.on("DocException",(t=>{e._capability.reject(Bd(t))})),t.on("PasswordRequest",(t=>{ea(this,RU,Promise.withResolvers());try{if(!e.onPassword)throw Bd(t);const n=t=>{t instanceof Error?$i(this,RU).reject(t):$i(this,RU).resolve({password:t})};e.onPassword(n,t.code)}catch(eG){$i(this,RU).reject(eG)}return $i(this,RU).promise})),t.on("DataLoaded",(t=>{var n;null==(n=e.onProgress)||n.call(e,{loaded:t.length,total:t.length}),this.downloadInfoCapability.resolve(t)})),t.on("StartRenderPage",(t=>{this.destroyed||$i(this,bU).get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)})),t.on("commonobj",(([e,n,l])=>{var i;if(this.destroyed||this.commonObjs.has(e))return null;switch(n){case"Font":const{disableFontFace:a,fontExtraProperties:s,pdfBug:r}=this._params;if("error"in l){const t=l.error;Ga(`Error during font loading: ${t}`),this.commonObjs.resolve(e,t);break}const o=r&&null!=(i=globalThis.FontInspector)&&i.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,c=new Md(l,{disableFontFace:a,fontExtraProperties:s,inspectFont:o});this.fontLoader.bind(c).catch((()=>t.sendWithPromise("FontFallback",{id:e}))).finally((()=>{!s&&c.data&&(c.data=null),this.commonObjs.resolve(e,c)}));break;case"CopyLocalImage":const{imageRef:d}=l;Ja(d,"The imageRef must be defined.");for(const t of $i(this,bU).values())for(const[,n]of t.objs)if((null==n?void 0:n.ref)===d)return n.dataLen?(this.commonObjs.resolve(e,structuredClone(n)),n.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(e,l);break;default:throw new Error(`Got unknown common object type ${n}`)}return null})),t.on("obj",(([t,e,n,l])=>{var i;if(this.destroyed)return;const a=$i(this,bU).get(e);if(!a.objs.has(t)){if(0===a._intentStates.size)return void(null==(i=null==l?void 0:l.bitmap)||i.close());switch(n){case"Image":a.objs.resolve(t,l),(null==l?void 0:l.dataLen)>ua&&(a._maybeCleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(t,l);break;default:throw new Error(`Got unknown object type ${n}`)}}})),t.on("DocProgress",(t=>{var n;this.destroyed||null==(n=e.onProgress)||n.call(e,{loaded:t.loaded,total:t.total})})),t.on("FetchBuiltInCMap",(async t=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.cMapReaderFactory)throw new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.");return this.cMapReaderFactory.fetch(t)})),t.on("FetchStandardFontData",(async t=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.standardFontDataFactory)throw new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.");return this.standardFontDataFactory.fetch(t)}))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var t;this.annotationStorage.size<=0&&Ga("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:e,transfer:n}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:e,filename:(null==(t=this._fullReader)?void 0:t.filename)??null},n).finally((()=>{this.annotationStorage.resetModified()}))}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,n=$i(this,ZU).get(e);if(n)return n;const l=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then((n=>{if(this.destroyed)throw new Error("Transport destroyed");n.refStr&&$i(this,NU).set(n.refStr,t);const l=new mU(e,n,this,this._params.pdfBug);return $i(this,bU).set(e,l),l}));return $i(this,ZU).set(e,l),l}getPageIndex(t){return _m(t)?this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return na(this,SU,WU).call(this,"GetFieldObjects")}hasJSActions(){return na(this,SU,WU).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return na(this,SU,WU).call(this,"GetDocJSActions")}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(t){return na(this,SU,WU).call(this,"GetOptionalContentConfig").then((e=>new Vh(e,t)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=$i(this,FU).get(t);if(e)return e;const n=this.messageHandler.sendWithPromise(t,null).then((t=>{var e,n;return{info:t[0],metadata:t[1]?new dh(t[1]):null,contentDispositionFilename:(null==(e=this._fullReader)?void 0:e.filename)??null,contentLength:(null==(n=this._fullReader)?void 0:n.contentLength)??null}}));return $i(this,FU).set(t,n),n}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(t=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of $i(this,bU).values())if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`);this.commonObjs.clear(),t||this.fontLoader.clear(),$i(this,FU).clear(),this.filterFactory.destroy(!0),Ym.cleanup()}}cachedPageNumber(t){if(!_m(t))return null;const e=0===t.gen?`${t.num}R`:`${t.num}R${t.gen}`;return $i(this,NU).get(e)??null}}FU=new WeakMap,bU=new WeakMap,ZU=new WeakMap,NU=new WeakMap,RU=new WeakMap,SU=new WeakSet,WU=function(t,e=null){const n=$i(this,FU).get(t);if(n)return n;const l=this.messageHandler.sendWithPromise(t,e);return $i(this,FU).set(t,l),l};const QU=Symbol("INITIAL_DATA");var yU,TU,MU,gU,EU,GU;class BU{constructor(){ta(this,TU),ta(this,yU,Object.create(null))}get(t,e=null){if(e){const n=na(this,TU,MU).call(this,t);return n.promise.then((()=>e(n.data))),null}const n=$i(this,yU)[t];if(!n||n.data===QU)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return n.data}has(t){const e=$i(this,yU)[t];return!!e&&e.data!==QU}delete(t){const e=$i(this,yU)[t];return!(!e||e.data===QU)&&(delete $i(this,yU)[t],!0)}resolve(t,e=null){const n=na(this,TU,MU).call(this,t);n.data=e,n.resolve()}clear(){var t;for(const e in $i(this,yU)){const{data:n}=$i(this,yU)[e];null==(t=null==n?void 0:n.bitmap)||t.close()}ea(this,yU,Object.create(null))}*[Symbol.iterator](){for(const t in $i(this,yU)){const{data:e}=$i(this,yU)[t];e!==QU&&(yield[t,e])}}}yU=new WeakMap,TU=new WeakSet,MU=function(t){var e;return(e=$i(this,yU))[t]||(e[t]={...Promise.withResolvers(),data:QU})};class JU{constructor(t){ta(this,gU,null),ea(this,gU,t),this.onContinue=null}get promise(){return $i(this,gU).capability.promise}cancel(t=0){$i(this,gU).cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=$i(this,gU).operatorList;if(!t)return!1;const{annotationCanvasMap:e}=$i(this,gU);return t.form||t.canvas&&(null==e?void 0:e.size)>0}}gU=new WeakMap;const kU=class t{constructor({callback:t,params:e,objs:n,commonObjs:l,annotationCanvasMap:i,operatorList:a,pageIndex:s,canvasFactory:r,filterFactory:o,useRequestAnimationFrame:c=!1,pdfBug:d=!1,pageColors:u=null}){ta(this,EU,null),this.callback=t,this.params=e,this.objs=n,this.commonObjs=l,this.annotationCanvasMap=i,this.operatorListIdx=null,this.operatorList=a,this._pageIndex=s,this.canvasFactory=r,this.filterFactory=o,this._pdfBug=d,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=!0===c&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new JU(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=e.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics({transparency:e=!1,optionalContentConfig:n}){var l,i;if(this.cancelled)return;if(this._canvas){if($i(t,GU).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");$i(t,GU).add(this._canvas)}this._pdfBug&&null!=(l=globalThis.StepperManager)&&l.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:a,viewport:s,transform:r,background:o}=this.params;this.gfx=new lh(a,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:r,viewport:s,transparency:e,background:o}),this.operatorListIdx=0,this.graphicsReady=!0,null==(i=this.graphicsReadyCallback)||i.call(this)}cancel(e=null,n=0){var l;this.running=!1,this.cancelled=!0,null==(l=this.gfx)||l.endDrawing(),$i(this,EU)&&(window.cancelAnimationFrame($i(this,EU)),ea(this,EU,null)),$i(t,GU).delete(this._canvas),this.callback(e||new ps(`Rendering cancelled, page ${this._pageIndex+1}`,n))}operatorListChanged(){var t;this.graphicsReady?(null==(t=this.stepper)||t.updateOperatorList(this.operatorList),!this.running&&this._continue()):this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound)}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?ea(this,EU,window.requestAnimationFrame((()=>{ea(this,EU,null),this._nextBound().catch(this._cancelBound)}))):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),$i(t,GU).delete(this._canvas),this.callback())))}};EU=new WeakMap,GU=new WeakMap,ta(kU,GU,new WeakSet);let YU=kU;const CU="4.10.38",XU="f9bea397f";function IU(t){return Math.floor(255*Math.max(0,Math.min(1,t))).toString(16).padStart(2,"0")}function DU(t){return Math.max(0,Math.min(255,255*t))}sa(670);class fU{static CMYK_G([t,e,n,l]){return["G",1-Math.min(1,.3*t+.59*n+.11*e+l)]}static G_CMYK([t]){return["CMYK",0,0,0,1-t]}static G_RGB([t]){return["RGB",t,t,t]}static G_rgb([t]){return t=DU(t),[t,t,t]}static G_HTML([t]){const e=IU(t);return`#${e}${e}${e}`}static RGB_G([t,e,n]){return["G",.3*t+.59*e+.11*n]}static RGB_rgb(t){return t.map(DU)}static RGB_HTML(t){return`#${t.map(IU).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([t,e,n,l]){return["RGB",1-Math.min(1,t+l),1-Math.min(1,n+l),1-Math.min(1,e+l)]}static CMYK_rgb([t,e,n,l]){return[DU(1-Math.min(1,t+l)),DU(1-Math.min(1,n+l)),DU(1-Math.min(1,e+l))]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK([t,e,n]){const l=1-t,i=1-e,a=1-n,s=Math.min(l,i,a);return["CMYK",l,i,a,s]}}class LU{create(t,e,n=!1){if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const l=this._createSVG("svg:svg");return l.setAttribute("version","1.1"),n||(l.setAttribute("width",`${t}px`),l.setAttribute("height",`${e}px`)),l.setAttribute("preserveAspectRatio","none"),l.setAttribute("viewBox",`0 0 ${t} ${e}`),l}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){Ba("Abstract method `_createSVG` called.")}}let wU=class extends LU{_createSVG(t){return document.createElementNS(ds,t)}},xU=class{static setupStorage(t,e,n,l,i){const a=l.getValue(e,{value:null});switch(n.name){case"textarea":if(null!==a.value&&(t.textContent=a.value),"print"===i)break;t.addEventListener("input",(t=>{l.setValue(e,{value:t.target.value})}));break;case"input":if("radio"===n.attributes.type||"checkbox"===n.attributes.type){if(a.value===n.attributes.xfaOn?t.setAttribute("checked",!0):a.value===n.attributes.xfaOff&&t.removeAttribute("checked"),"print"===i)break;t.addEventListener("change",(t=>{l.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})}))}else{if(null!==a.value&&t.setAttribute("value",a.value),"print"===i)break;t.addEventListener("input",(t=>{l.setValue(e,{value:t.target.value})}))}break;case"select":if(null!==a.value){t.setAttribute("value",a.value);for(const t of n.children)t.attributes.value===a.value?t.attributes.selected=!0:t.attributes.hasOwnProperty("selected")&&delete t.attributes.selected}t.addEventListener("input",(t=>{const n=t.target.options,i=-1===n.selectedIndex?"":n[n.selectedIndex].value;l.setValue(e,{value:i})}));break}}static setAttributes({html:t,element:e,storage:n=null,intent:l,linkService:i}){const{attributes:a}=e,s=t instanceof HTMLAnchorElement;"radio"===a.type&&(a.name=`${a.name}-${l}`);for(const[r,o]of Object.entries(a))if(null!=o)switch(r){case"class":o.length&&t.setAttribute(r,o.join(" "));break;case"dataId":break;case"id":t.setAttribute("data-element-id",o);break;case"style":Object.assign(t.style,o);break;case"textContent":t.textContent=o;break;default:(!s||"href"!==r&&"newWindow"!==r)&&t.setAttribute(r,o)}s&&i.addLinkAttributes(t,a.href,a.newWindow),n&&a.dataId&&this.setupStorage(t,a.dataId,e,n)}static render(t){var e,n;const l=t.annotationStorage,i=t.linkService,a=t.xfaHtml,s=t.intent||"display",r=document.createElement(a.name);a.attributes&&this.setAttributes({html:r,element:a,intent:s,linkService:i});const o="richText"!==s,c=t.div;if(c.append(r),t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;c.style.transform=e}o&&c.setAttribute("class","xfaLayer xfaFont");const d=[];if(0===a.children.length){if(a.value){const t=document.createTextNode(a.value);r.append(t),o&&Cm.shouldBuildText(a.name)&&d.push(t)}return{textDivs:d}}const u=[[a,-1,r]];for(;u.length>0;){const[t,a,r]=u.at(-1);if(a+1===t.children.length){u.pop();continue}const c=t.children[++u.at(-1)[1]];if(null===c)continue;const{name:h}=c;if("#text"===h){const t=document.createTextNode(c.value);d.push(t),r.append(t);continue}const m=null!=(e=null==c?void 0:c.attributes)&&e.xmlns?document.createElementNS(c.attributes.xmlns,h):document.createElement(h);if(r.append(m),c.attributes&&this.setAttributes({html:m,element:c,storage:l,intent:s,linkService:i}),(null==(n=c.children)?void 0:n.length)>0)u.push([c,-1,m]);else if(c.value){const t=document.createTextNode(c.value);o&&Cm.shouldBuildText(h)&&d.push(t),m.append(t)}}for(const h of c.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))h.setAttribute("readOnly",!0);return{textDivs:d}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e,t.div.hidden=!1}};const zU=1e3,vU=9,OU=new WeakSet;function _U(t){return{width:t[2]-t[0],height:t[3]-t[1]}}class jU{static create(t){switch(t.data.annotationType){case Sa.LINK:return new $p(t);case Sa.TEXT:return new tF(t);case Sa.WIDGET:switch(t.data.fieldType){case"Tx":return new nF(t);case"Btn":return t.data.radioButton?new aF(t):t.data.checkBox?new iF(t):new sF(t);case"Ch":return new rF(t);case"Sig":return new lF(t)}return new eF(t);case Sa.POPUP:return new oF(t);case Sa.FREETEXT:return new dF(t);case Sa.LINE:return new uF(t);case Sa.SQUARE:return new hF(t);case Sa.CIRCLE:return new mF(t);case Sa.POLYLINE:return new UF(t);case Sa.CARET:return new FF(t);case Sa.INK:return new bF(t);case Sa.POLYGON:return new pF(t);case Sa.HIGHLIGHT:return new ZF(t);case Sa.UNDERLINE:return new NF(t);case Sa.SQUIGGLY:return new RF(t);case Sa.STRIKEOUT:return new SF(t);case Sa.STAMP:return new WF(t);case Sa.FILEATTACHMENT:return new VF(t);default:return new tp(t)}}}var KU,PU,AU,HU,qU;const $U=class t{constructor(t,{isRenderable:e=!1,ignoreBorder:n=!1,createQuadrilaterals:l=!1}={}){ta(this,HU),ta(this,KU,null),ta(this,PU,!1),ta(this,AU,null),this.isRenderable=e,this.data=t.data,this.layer=t.layer,this.linkService=t.linkService,this.downloadManager=t.downloadManager,this.imageResourcesPath=t.imageResourcesPath,this.renderForms=t.renderForms,this.svgFactory=t.svgFactory,this.annotationStorage=t.annotationStorage,this.enableScripting=t.enableScripting,this.hasJSActions=t.hasJSActions,this._fieldObjects=t.fieldObjects,this.parent=t.parent,e&&(this.container=this._createContainer(n)),l&&this._createQuadrilaterals()}static _hasPopupData({titleObj:t,contentsObj:e,richText:n}){return!!(null!=t&&t.str||null!=e&&e.str||null!=n&&n.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return t._hasPopupData(this.data)}updateEdited(t){var e;if(!this.container)return;$i(this,KU)||ea(this,KU,{rect:this.data.rect.slice(0)});const{rect:n}=t;n&&na(this,HU,qU).call(this,n),null==(e=$i(this,AU))||e.popup.updateEdited(t)}resetEdited(){var t;$i(this,KU)&&(na(this,HU,qU).call(this,$i(this,KU).rect),null==(t=$i(this,AU))||t.popup.resetEdited(),ea(this,KU,null))}_createContainer(t){const{data:e,parent:{page:n,viewport:l}}=this,i=document.createElement("section");i.setAttribute("data-annotation-id",e.id),this instanceof eF||(i.tabIndex=zU);const{style:a}=i;if(a.zIndex=this.parent.zIndex++,e.alternativeText&&(i.title=e.alternativeText),e.noRotate&&i.classList.add("norotate"),!e.rect||this instanceof oF){const{rotation:t}=e;return!e.hasOwnCanvas&&0!==t&&this.setRotation(t,i),i}const{width:s,height:r}=_U(e.rect);if(!t&&e.borderStyle.width>0){a.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,n=e.borderStyle.verticalCornerRadius;if(t>0||n>0){const e=`calc(${t}px * var(--scale-factor)) / calc(${n}px * var(--scale-factor))`;a.borderRadius=e}else if(this instanceof aF){const t=`calc(${s}px * var(--scale-factor)) / calc(${r}px * var(--scale-factor))`;a.borderRadius=t}switch(e.borderStyle.style){case Wa.SOLID:a.borderStyle="solid";break;case Wa.DASHED:a.borderStyle="dashed";break;case Wa.BEVELED:Ga("Unimplemented border style: beveled");break;case Wa.INSET:Ga("Unimplemented border style: inset");break;case Wa.UNDERLINE:a.borderBottomStyle="solid";break}const l=e.borderColor||null;l?(ea(this,PU,!0),a.borderColor=ns.makeHexColor(0|l[0],0|l[1],0|l[2])):a.borderWidth=0}const o=ns.normalizeRect([e.rect[0],n.view[3]-e.rect[1]+n.view[1],e.rect[2],n.view[3]-e.rect[3]+n.view[1]]),{pageWidth:c,pageHeight:d,pageX:u,pageY:h}=l.rawDims;a.left=100*(o[0]-u)/c+"%",a.top=100*(o[1]-h)/d+"%";const{rotation:m}=e;return e.hasOwnCanvas||0===m?(a.width=100*s/c+"%",a.height=100*r/d+"%"):this.setRotation(m,i),i}setRotation(t,e=this.container){if(!this.data.rect)return;const{pageWidth:n,pageHeight:l}=this.parent.viewport.rawDims,{width:i,height:a}=_U(this.data.rect);let s,r;t%180===0?(s=100*i/n,r=100*a/l):(s=100*a/n,r=100*i/l),e.style.width=`${s}%`,e.style.height=`${r}%`,e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const t=(t,e,n)=>{const l=n.detail[t],i=l[0],a=l.slice(1);n.target.style[e]=fU[`${i}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[e]:fU[`${i}_rgb`](a)})};return Ca(this,"_commonActions",{display:t=>{const{display:e}=t.detail,n=e%2===1;this.container.style.visibility=n?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:1===e||2===e})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:e}=t.detail;this.container.style.visibility=e?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:t=>{setTimeout((()=>t.target.focus({preventScroll:!1})),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:e=>{t("bgColor","backgroundColor",e)},fillColor:e=>{t("fillColor","backgroundColor",e)},fgColor:e=>{t("fgColor","color",e)},textColor:e=>{t("textColor","color",e)},borderColor:e=>{t("borderColor","borderColor",e)},strokeColor:e=>{t("strokeColor","borderColor",e)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e),this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const n=this._commonActions;for(const l of Object.keys(e.detail)){const i=t[l]||n[l];null==i||i(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const n=this._commonActions;for(const[l,i]of Object.entries(e)){const a=n[l];if(a){const n={detail:{[l]:i},target:t};a(n),delete e[l]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,n,l,i]=this.data.rect.map((t=>Math.fround(t)));if(8===t.length){const[a,s,r,o]=t.subarray(2,6);if(l===a&&i===s&&e===r&&n===o)return}const{style:a}=this.container;let s;if($i(this,PU)){const{borderColor:t,borderWidth:e}=a;a.borderWidth=0,s=["url('data:image/svg+xml;utf8,",'',``],this.container.classList.add("hasBorder")}const r=l-e,o=i-n,{svgFactory:c}=this,d=c.createElement("svg");d.classList.add("quadrilateralsContainer"),d.setAttribute("width",0),d.setAttribute("height",0);const u=c.createElement("defs");d.append(u);const h=c.createElement("clipPath"),m=`clippath_${this.data.id}`;h.setAttribute("id",m),h.setAttribute("clipPathUnits","objectBoundingBox"),u.append(h);for(let U=2,p=t.length;U`)}$i(this,PU)&&(s.push("')"),a.backgroundImage=s.join("")),this.container.append(d),this.container.style.clipPath=`url(#${m})`}_createPopup(){const{data:t}=this,e=ea(this,AU,new oF({data:{color:t.color,titleObj:t.titleObj,modificationDate:t.modificationDate,contentsObj:t.contentsObj,richText:t.richText,parentRect:t.rect,borderStyle:0,id:`popup_${t.id}`,rotation:t.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(e.render())}render(){Ba("Abstract method `AnnotationElement.render` called")}_getElementsByName(t,e=null){const n=[];if(this._fieldObjects){const l=this._fieldObjects[t];if(l)for(const{page:t,id:i,exportValues:a}of l){if(-1===t||i===e)continue;const l="string"==typeof a?a:null,s=document.querySelector(`[data-element-id="${i}"]`);!s||OU.has(s)?n.push({id:i,exportValue:l,domElement:s}):Ga(`_getElementsByName - element not allowed: ${i}`)}return n}for(const l of document.getElementsByName(t)){const{exportValue:t}=l,i=l.getAttribute("data-element-id");i!==e&&OU.has(l)&&n.push({id:i,exportValue:t,domElement:l})}return n}show(){var t;this.container&&(this.container.hidden=!1),null==(t=this.popup)||t.maybeShow()}hide(){var t;this.container&&(this.container.hidden=!0),null==(t=this.popup)||t.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",(()=>{var n;null==(n=this.linkService.eventBus)||n.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e})}))}};KU=new WeakMap,PU=new WeakMap,AU=new WeakMap,HU=new WeakSet,qU=function(t){const{container:{style:e},data:{rect:n,rotation:l},parent:{viewport:{rawDims:{pageWidth:i,pageHeight:a,pageX:s,pageY:r}}}}=this;null==n||n.splice(0,4,...t);const{width:o,height:c}=_U(t);e.left=100*(t[0]-s)/i+"%",e.top=100*(a-t[3]+r)/a+"%",0===l?(e.width=100*o/i+"%",e.height=100*c/a+"%"):this.setRotation(l)};let tp=$U;var ep,np,lp,ip,ap,sp,rp,op,cp,dp,up,hp,mp,Up,pp,Fp,bp,Zp,Np,Rp,Sp,Wp,Vp,Qp,yp,Tp,Mp,gp,Ep,Gp,Bp,Jp,kp,Yp,Cp,Xp,Ip,Dp,fp,Lp,wp,xp,zp,vp,Op,_p,jp,Kp,Pp,Ap,Hp,qp;class $p extends tp{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!(null==e||!e.ignoreBorder),createQuadrilaterals:!0}),ta(this,ep),this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,n=document.createElement("a");n.setAttribute("data-element-id",t.id);let l=!1;return t.url?(e.addLinkAttributes(n,t.url,t.newWindow),l=!0):t.action?(this._bindNamedAction(n,t.action),l=!0):t.attachment?(na(this,ep,lp).call(this,n,t.attachment,t.attachmentDest),l=!0):t.setOCGState?(na(this,ep,ip).call(this,n,t.setOCGState),l=!0):t.dest?(this._bindLink(n,t.dest),l=!0):(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(n,t),l=!0),t.resetForm?(this._bindResetFormAction(n,t.resetForm),l=!0):this.isTooltipOnly&&!l&&(this._bindLink(n,""),l=!0)),this.container.classList.add("linkAnnotation"),l&&this.container.append(n),this.container}_bindLink(t,e){t.href=this.linkService.getDestinationHash(e),t.onclick=()=>(e&&this.linkService.goToDestination(e),!1),(e||""===e)&&na(this,ep,np).call(this)}_bindNamedAction(t,e){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeNamedAction(e),!1),na(this,ep,np).call(this)}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const l of Object.keys(e.actions)){const i=n.get(l);i&&(t[i]=()=>{var t;return null==(t=this.linkService.eventBus)||t.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:l}}),!1})}t.onclick||(t.onclick=()=>!1),na(this,ep,np).call(this)}_bindResetFormAction(t,e){const n=t.onclick;if(n||(t.href=this.linkService.getAnchorUrl("")),na(this,ep,np).call(this),!this._fieldObjects)return Ga('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),void(n||(t.onclick=()=>!1));t.onclick=()=>{var t;null==n||n();const{fields:l,refs:i,include:a}=e,s=[];if(0!==l.length||0!==i.length){const t=new Set(i);for(const e of l){const n=this._fieldObjects[e]||[];for(const{id:e}of n)t.add(e)}for(const e of Object.values(this._fieldObjects))for(const n of e)t.has(n.id)===a&&s.push(n)}else for(const e of Object.values(this._fieldObjects))s.push(...e);const r=this.annotationStorage,o=[];for(const e of s){const{id:t}=e;switch(o.push(t),e.type){case"text":{const n=e.defaultValue||"";r.setValue(t,{value:n});break}case"checkbox":case"radiobutton":{const n=e.defaultValue===e.exportValues;r.setValue(t,{value:n});break}case"combobox":case"listbox":{const n=e.defaultValue||"";r.setValue(t,{value:n});break}default:continue}const n=document.querySelector(`[data-element-id="${t}"]`);n&&(OU.has(n)?n.dispatchEvent(new Event("resetform")):Ga(`_bindResetFormAction - element not allowed: ${t}`))}return this.enableScripting&&(null==(t=this.linkService.eventBus)||t.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:o,name:"ResetForm"}})),!1}}}ep=new WeakSet,np=function(){this.container.setAttribute("data-internal-link","")},lp=function(t,e,n=null){t.href=this.linkService.getAnchorUrl(""),e.description&&(t.title=e.description),t.onclick=()=>{var t;return null==(t=this.downloadManager)||t.openOrDownloadData(e.content,e.filename,n),!1},na(this,ep,np).call(this)},ip=function(t,e){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeSetOCGState(e),!1),na(this,ep,np).call(this)};class tF extends tp{constructor(t){super(t,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");return t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),t.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(t),this.container}}class eF extends tp{render(){return this.container}showElementAndHideCanvas(t){var e;this.data.hasOwnCanvas&&("CANVAS"===(null==(e=t.previousSibling)?void 0:e.nodeName)&&(t.previousSibling.hidden=!0),t.hidden=!1)}_getKeyModifier(t){return Aa.platform.isMac?t.metaKey:t.ctrlKey}_setEventListener(t,e,n,l,i){n.includes("mouse")?t.addEventListener(n,(t=>{var e;null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:l,value:i(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})})):t.addEventListener(n,(t=>{var a;if("blur"===n){if(!e.focused||!t.relatedTarget)return;e.focused=!1}else if("focus"===n){if(e.focused)return;e.focused=!0}i&&(null==(a=this.linkService.eventBus)||a.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:l,value:i(t)}}))}))}_setEventListeners(t,e,n,l){var i,a,s;for(const[r,o]of n)("Action"===o||null!=(i=this.data.actions)&&i[o])&&(("Focus"===o||"Blur"===o)&&(e||(e={focused:!1})),this._setEventListener(t,e,r,o,l),"Focus"!==o||null!=(a=this.data.actions)&&a.Blur?"Blur"===o&&(null==(s=this.data.actions)||!s.Focus)&&this._setEventListener(t,e,"focus","Focus",null):this._setEventListener(t,e,"blur","Blur",null))}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=null===e?"transparent":ns.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:n}=this.data.defaultAppearanceData,l=this.data.defaultAppearanceData.fontSize||vU,i=t.style;let a;const s=2,r=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-s),e=Math.round(t/(ha*l))||1,n=t/e;a=Math.min(l,r(n/ha))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-s);a=Math.min(l,r(t/ha))}i.fontSize=`calc(${a}px * var(--scale-factor))`,i.color=ns.makeHexColor(n[0],n[1],n[2]),null!==this.data.textAlignment&&(i.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required"),t.setAttribute("aria-required",e)}}class nF extends eF{constructor(t){const e=t.renderForms||t.data.hasOwnCanvas||!t.data.hasAppearance&&!!t.data.fieldValue;super(t,{isRenderable:e})}setPropertyOnSiblings(t,e,n,l){const i=this.annotationStorage;for(const a of this._getElementsByName(t.name,t.id))a.domElement&&(a.domElement[e]=n),i.setValue(a.id,{[l]:n})}render(){var t,e;const n=this.annotationStorage,l=this.data.id;this.container.classList.add("textWidgetAnnotation");let i=null;if(this.renderForms){const a=n.getValue(l,{value:this.data.fieldValue});let s=a.value||"";const r=n.getValue(l,{charLimit:this.data.maxLen}).charLimit;r&&s.length>r&&(s=s.slice(0,r));let o=a.formattedValue||(null==(t=this.data.textContent)?void 0:t.join("\n"))||null;o&&this.data.comb&&(o=o.replaceAll(/\s+/g,""));const c={userValue:s,formattedValue:o,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(i=document.createElement("textarea"),i.textContent=o??s,this.data.doNotScroll&&(i.style.overflowY="hidden")):(i=document.createElement("input"),i.type="text",i.setAttribute("value",o??s),this.data.doNotScroll&&(i.style.overflowX="hidden")),this.data.hasOwnCanvas&&(i.hidden=!0),OU.add(i),i.setAttribute("data-element-id",l),i.disabled=this.data.readOnly,i.name=this.data.fieldName,i.tabIndex=zU,this._setRequired(i,this.data.required),r&&(i.maxLength=r),i.addEventListener("input",(t=>{n.setValue(l,{value:t.target.value}),this.setPropertyOnSiblings(i,"value",t.target.value,"value"),c.formattedValue=null})),i.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue??"";i.value=c.userValue=e,c.formattedValue=null}));let d=t=>{const{formattedValue:e}=c;null!=e&&(t.target.value=e),t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){i.addEventListener("focus",(t=>{var e;if(c.focused)return;const{target:n}=t;c.userValue&&(n.value=c.userValue),c.lastCommittedValue=n.value,c.commitKey=1,null!=(e=this.data.actions)&&e.Focus||(c.focused=!0)})),i.addEventListener("updatefromsandbox",(t=>{this.showElementAndHideCanvas(t.target);const e={value(t){c.userValue=t.detail.value??"",n.setValue(l,{value:c.userValue.toString()}),t.target.value=c.userValue},formattedValue(t){const{formattedValue:e}=t.detail;c.formattedValue=e,null!=e&&t.target!==document.activeElement&&(t.target.value=e),n.setValue(l,{formattedValue:e})},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:t=>{var e;const{charLimit:i}=t.detail,{target:a}=t;if(0===i)return void a.removeAttribute("maxLength");a.setAttribute("maxLength",i);let s=c.userValue;!s||s.length<=i||(s=s.slice(0,i),a.value=c.userValue=s,n.setValue(l,{value:s}),null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:s,willCommit:!0,commitKey:1,selStart:a.selectionStart,selEnd:a.selectionEnd}}))}};this._dispatchEventFromSandbox(e,t)})),i.addEventListener("keydown",(t=>{var e;c.commitKey=1;let n=-1;if("Escape"===t.key?n=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(c.commitKey=3):n=2,-1===n)return;const{value:i}=t.target;c.lastCommittedValue!==i&&(c.lastCommittedValue=i,c.userValue=i,null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:i,willCommit:!0,commitKey:n,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}}))}));const t=d;d=null,i.addEventListener("blur",(e=>{var n,i;if(!c.focused||!e.relatedTarget)return;null!=(n=this.data.actions)&&n.Blur||(c.focused=!1);const{value:a}=e.target;c.userValue=a,c.lastCommittedValue!==a&&(null==(i=this.linkService.eventBus)||i.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:a,willCommit:!0,commitKey:c.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}})),t(e)})),null!=(e=this.data.actions)&&e.Keystroke&&i.addEventListener("beforeinput",(t=>{var e;c.lastCommittedValue=null;const{data:n,target:i}=t,{value:a,selectionStart:s,selectionEnd:r}=i;let o=s,d=r;switch(t.inputType){case"deleteWordBackward":{const t=a.substring(0,s).match(/\w*[^\w]*$/);t&&(o-=t[0].length);break}case"deleteWordForward":{const t=a.substring(s).match(/^[^\w]*\w*/);t&&(d+=t[0].length);break}case"deleteContentBackward":s===r&&(o-=1);break;case"deleteContentForward":s===r&&(d+=1);break}t.preventDefault(),null==(e=this.linkService.eventBus)||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:l,name:"Keystroke",value:a,change:n||"",willCommit:!1,selStart:o,selEnd:d}})})),this._setEventListeners(i,c,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.value))}if(d&&i.addEventListener("blur",d),this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/r;i.classList.add("comb"),i.style.letterSpacing=`calc(${t}px * var(--scale-factor) - 1ch)`}}else i=document.createElement("div"),i.textContent=this.data.fieldValue,i.style.verticalAlign="middle",i.style.display="table-cell",this.data.hasOwnCanvas&&(i.hidden=!0);return this._setTextStyle(i),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class lF extends eF{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class iF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,n=e.id;let l=t.getValue(n,{value:e.exportValue===e.fieldValue}).value;"string"==typeof l&&(l="Off"!==l,t.setValue(n,{value:l})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const i=document.createElement("input");return OU.add(i),i.setAttribute("data-element-id",n),i.disabled=e.readOnly,this._setRequired(i,this.data.required),i.type="checkbox",i.name=e.fieldName,l&&i.setAttribute("checked",!0),i.setAttribute("exportValue",e.exportValue),i.tabIndex=zU,i.addEventListener("change",(l=>{const{name:i,checked:a}=l.target;for(const s of this._getElementsByName(i,n)){const n=a&&s.exportValue===e.exportValue;s.domElement&&(s.domElement.checked=n),t.setValue(s.id,{value:n})}t.setValue(n,{value:a})})),i.addEventListener("resetform",(t=>{const n=e.defaultFieldValue||"Off";t.target.checked=n===e.exportValue})),this.enableScripting&&this.hasJSActions&&(i.addEventListener("updatefromsandbox",(e=>{const l={value(e){e.target.checked="Off"!==e.detail.value,t.setValue(n,{value:e.target.checked})}};this._dispatchEventFromSandbox(l,e)})),this._setEventListeners(i,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))),this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class aF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,n=e.id;let l=t.getValue(n,{value:e.fieldValue===e.buttonValue}).value;if("string"==typeof l&&(l=l!==e.buttonValue,t.setValue(n,{value:l})),l)for(const a of this._getElementsByName(e.fieldName,n))t.setValue(a.id,{value:!1});const i=document.createElement("input");if(OU.add(i),i.setAttribute("data-element-id",n),i.disabled=e.readOnly,this._setRequired(i,this.data.required),i.type="radio",i.name=e.fieldName,l&&i.setAttribute("checked",!0),i.tabIndex=zU,i.addEventListener("change",(e=>{const{name:l,checked:i}=e.target;for(const a of this._getElementsByName(l,n))t.setValue(a.id,{value:!1});t.setValue(n,{value:i})})),i.addEventListener("resetform",(t=>{const n=e.defaultFieldValue;t.target.checked=null!=n&&n===e.buttonValue})),this.enableScripting&&this.hasJSActions){const l=e.buttonValue;i.addEventListener("updatefromsandbox",(e=>{const i={value:e=>{const i=l===e.detail.value;for(const l of this._getElementsByName(e.target.name)){const e=i&&l.id===n;l.domElement&&(l.domElement.checked=e),t.setValue(l.id,{value:e})}}};this._dispatchEventFromSandbox(i,e)})),this._setEventListeners(i,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}return this._setBackgroundColor(i),this._setDefaultPropertiesFromJS(i),this.container.append(i),this.container}}class sF extends $p{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");const e=t.lastChild;return this.enableScripting&&this.hasJSActions&&e&&(this._setDefaultPropertiesFromJS(e),e.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({},t)}))),t}}class rF extends eF{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,n=t.getValue(e,{value:this.data.fieldValue}),l=document.createElement("select");OU.add(l),l.setAttribute("data-element-id",e),l.disabled=this.data.readOnly,this._setRequired(l,this.data.required),l.name=this.data.fieldName,l.tabIndex=zU;let i=this.data.combo&&this.data.options.length>0;this.data.combo||(l.size=this.data.options.length,this.data.multiSelect&&(l.multiple=!0)),l.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue;for(const n of l.options)n.selected=n.value===e}));for(const c of this.data.options){const t=document.createElement("option");t.textContent=c.displayValue,t.value=c.exportValue,n.value.includes(c.exportValue)&&(t.setAttribute("selected",!0),i=!1),l.append(t)}let a=null;if(i){const t=document.createElement("option");t.value=" ",t.setAttribute("hidden",!0),t.setAttribute("selected",!0),l.prepend(t),a=()=>{t.remove(),l.removeEventListener("input",a),a=null},l.addEventListener("input",a)}const s=t=>{const e=t?"value":"textContent",{options:n,multiple:i}=l;return i?Array.prototype.filter.call(n,(t=>t.selected)).map((t=>t[e])):-1===n.selectedIndex?null:n[n.selectedIndex][e]};let r=s(!1);const o=t=>{const e=t.target.options;return Array.prototype.map.call(e,(t=>({displayValue:t.textContent,exportValue:t.value})))};return this.enableScripting&&this.hasJSActions?(l.addEventListener("updatefromsandbox",(n=>{const i={value(n){null==a||a();const i=n.detail.value,o=new Set(Array.isArray(i)?i:[i]);for(const t of l.options)t.selected=o.has(t.value);t.setValue(e,{value:s(!0)}),r=s(!1)},multipleSelection(t){l.multiple=!0},remove(n){const i=l.options,a=n.detail.remove;i[a].selected=!1,l.remove(a),i.length>0&&-1===Array.prototype.findIndex.call(i,(t=>t.selected))&&(i[0].selected=!0),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},clear(n){for(;0!==l.length;)l.remove(0);t.setValue(e,{value:null,items:[]}),r=s(!1)},insert(n){const{index:i,displayValue:a,exportValue:c}=n.detail.insert,d=l.children[i],u=document.createElement("option");u.textContent=a,u.value=c,d?d.before(u):l.append(u),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},items(n){const{items:i}=n.detail;for(;0!==l.length;)l.remove(0);for(const t of i){const{displayValue:e,exportValue:n}=t,i=document.createElement("option");i.textContent=e,i.value=n,l.append(i)}l.options.length>0&&(l.options[0].selected=!0),t.setValue(e,{value:s(!0),items:o(n)}),r=s(!1)},indices(n){const l=new Set(n.detail.indices);for(const t of n.target.options)t.selected=l.has(t.index);t.setValue(e,{value:s(!0)}),r=s(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(i,n)})),l.addEventListener("input",(n=>{var l;const i=s(!0),a=s(!1);t.setValue(e,{value:i}),n.preventDefault(),null==(l=this.linkService.eventBus)||l.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,change:a,changeEx:i,willCommit:!1,commitKey:1,keyDown:!1}})})),this._setEventListeners(l,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(t=>t.target.value))):l.addEventListener("input",(function(n){t.setValue(e,{value:s(!0)})})),this.data.combo&&this._setTextStyle(l),this._setBackgroundColor(l),this._setDefaultPropertiesFromJS(l),this.container.append(l),this.container}}class oF extends tp{constructor(t){const{data:e,elements:n}=t;super(t,{isRenderable:tp._hasPopupData(e)}),this.elements=n,this.popup=null}render(){this.container.classList.add("popupAnnotation");const t=this.popup=new cF({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),e=[];for(const n of this.elements)n.popup=t,n.container.ariaHasPopup="dialog",e.push(n.data.id),n.addHighlightArea();return this.container.setAttribute("aria-controls",e.map((t=>`${os}${t}`)).join(",")),this.container}}class cF{constructor({container:t,color:e,elements:n,titleObj:l,modificationDate:i,contentsObj:a,richText:s,parent:r,rect:o,parentRect:c,open:d}){var u;ta(this,Qp),ta(this,ap,na(this,Qp,Ep).bind(this)),ta(this,sp,na(this,Qp,kp).bind(this)),ta(this,rp,na(this,Qp,Jp).bind(this)),ta(this,op,na(this,Qp,Bp).bind(this)),ta(this,cp,null),ta(this,dp,null),ta(this,up,null),ta(this,hp,null),ta(this,mp,null),ta(this,Up,null),ta(this,pp,null),ta(this,Fp,!1),ta(this,bp,null),ta(this,Zp,null),ta(this,Np,null),ta(this,Rp,null),ta(this,Sp,null),ta(this,Wp,null),ta(this,Vp,!1),ea(this,dp,t),ea(this,Sp,l),ea(this,up,a),ea(this,Rp,s),ea(this,Up,r),ea(this,cp,e),ea(this,Np,o),ea(this,pp,c),ea(this,mp,n),ea(this,hp,Ts.toDateObject(i)),this.trigger=n.flatMap((t=>t.getElementsToTriggerPopup()));for(const h of this.trigger)h.addEventListener("click",$i(this,op)),h.addEventListener("mouseenter",$i(this,rp)),h.addEventListener("mouseleave",$i(this,sp)),h.classList.add("popupTriggerArea");for(const h of n)null==(u=h.container)||u.addEventListener("keydown",$i(this,ap));$i(this,dp).hidden=!0,d&&na(this,Qp,Bp).call(this)}render(){if($i(this,bp))return;const t=ea(this,bp,document.createElement("div"));if(t.className="popup",$i(this,cp)){const e=t.style.outlineColor=ns.makeHexColor(...$i(this,cp));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?t.style.backgroundColor=`color-mix(in srgb, ${e} 30%, white)`:t.style.backgroundColor=ns.makeHexColor(...$i(this,cp).map((t=>Math.floor(.7*(255-t)+t))))}const e=document.createElement("span");e.className="header";const n=document.createElement("h1");if(e.append(n),({dir:n.dir,str:n.textContent}=$i(this,Sp)),t.append(e),$i(this,hp)){const t=document.createElement("span");t.classList.add("popupDate"),t.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),t.setAttribute("data-l10n-args",JSON.stringify({dateObj:$i(this,hp).valueOf()})),e.append(t)}const l=$i(this,Qp,yp);if(l)xU.render({xfaHtml:l,intent:"richText",div:t}),t.lastChild.classList.add("richText","popupContent");else{const e=this._formatContents($i(this,up));t.append(e)}$i(this,dp).append(t)}_formatContents({str:t,dir:e}){const n=document.createElement("p");n.classList.add("popupContent"),n.dir=e;const l=t.split(/(?:\r\n?|\n)/);for(let i=0,a=l.length;i=0&&i.setAttribute("stroke-width",e||1),n)for(let a=0,s=$i(this,fp).length;a{"Enter"===t.key&&(l?t.metaKey:t.ctrlKey)&&na(this,zp,vp).call(this)})),!e.popupRef&&this.hasPopupData?this._createPopup():n.classList.add("popupTriggerArea"),t.append(n),t}getElementsToTriggerPopup(){return $i(this,xp)}addHighlightArea(){this.container.classList.add("highlightArea")}}xp=new WeakMap,zp=new WeakSet,vp=function(){var t;null==(t=this.downloadManager)||t.openOrDownloadData(this.content,this.filename)};let QF=(qp=class{constructor({div:t,accessibilityManager:e,annotationCanvasMap:n,annotationEditorUIManager:l,page:i,viewport:a,structTreeLayer:s}){ta(this,Pp),ta(this,Op,null),ta(this,_p,null),ta(this,jp,new Map),ta(this,Kp,null),this.div=t,ea(this,Op,e),ea(this,_p,n),ea(this,Kp,s||null),this.page=i,this.viewport=a,this.zIndex=0,this._annotationEditorUIManager=l}hasEditableAnnotations(){return $i(this,jp).size>0}async render(t){var e;const{annotations:n}=t,l=this.div;Js(l,this.viewport);const i=new Map,a={data:null,layer:l,linkService:t.linkService,downloadManager:t.downloadManager,imageResourcesPath:t.imageResourcesPath||"",renderForms:!1!==t.renderForms,svgFactory:new wU,annotationStorage:t.annotationStorage||new Qd,enableScripting:!0===t.enableScripting,hasJSActions:t.hasJSActions,fieldObjects:t.fieldObjects,parent:this,elements:null};for(const s of n){if(s.noHTML)continue;const t=s.annotationType===Sa.POPUP;if(t){const t=i.get(s.id);if(!t)continue;a.elements=t}else{const{width:t,height:e}=_U(s.rect);if(t<=0||e<=0)continue}a.data=s;const n=jU.create(a);if(!n.isRenderable)continue;if(!t&&s.popupRef){const t=i.get(s.popupRef);t?t.push(n):i.set(s.popupRef,[n])}const l=n.render();s.hidden&&(l.style.visibility="hidden"),await na(this,Pp,Ap).call(this,l,s.id),n._isEditable&&($i(this,jp).set(n.data.id,n),null==(e=this._annotationEditorUIManager)||e.renderAnnotationElement(n))}na(this,Pp,Hp).call(this)}update({viewport:t}){const e=this.div;this.viewport=t,Js(e,{rotation:t.rotation}),na(this,Pp,Hp).call(this),e.hidden=!1}getEditableAnnotations(){return Array.from($i(this,jp).values())}getEditableAnnotation(t){return $i(this,jp).get(t)}},Op=new WeakMap,_p=new WeakMap,jp=new WeakMap,Kp=new WeakMap,Pp=new WeakSet,Ap=async function(t,e){var n,l;const i=t.firstChild||t,a=i.id=`${os}${e}`,s=await(null==(n=$i(this,Kp))?void 0:n.getAriaAttributes(a));if(s)for(const[r,o]of s)i.setAttribute(r,o);this.div.append(t),null==(l=$i(this,Op))||l.moveElementInDOM(this.div,t,i,!1)},Hp=function(){if(!$i(this,_p))return;const t=this.div;for(const[e,n]of $i(this,_p)){const l=t.querySelector(`[data-annotation-id="${e}"]`);if(!l)continue;n.className="annotationContent";const{firstChild:i}=l;i?"CANVAS"===i.nodeName?i.replaceWith(n):i.classList.contains("annotationContent")?i.after(n):i.before(n):l.append(n)}$i(this,_p).clear()},qp);const yF=/\r\n?|\n/g;var TF,MF,gF,EF,GF,BF,JF,kF,YF,CF,XF,IF,DF,fF,LF,wF;const xF=class t extends dd{constructor(e){super({...e,name:"freeTextEditor"}),ta(this,BF),ta(this,TF),ta(this,MF,""),ta(this,gF,`${this.id}-editor`),ta(this,EF,null),ta(this,GF),ea(this,TF,e.color||t._defaultColor||dd._defaultLineColor),ea(this,GF,e.fontSize||t._defaultFontSize)}static get _keyboardManager(){const e=t.prototype,n=t=>t.isEmpty(),l=Xo.TRANSLATE_SMALL,i=Xo.TRANSLATE_BIG;return Ca(this,"_keyboardManager",new Sr([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-l,0],checker:n}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:n}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[l,0],checker:n}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[i,0],checker:n}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-l],checker:n}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:n}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,l],checker:n}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,i],checker:n}]]))}static initialize(t,e){dd.initialize(t,e);const n=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(n.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,n){switch(e){case ba.FREETEXT_SIZE:t._defaultFontSize=n;break;case ba.FREETEXT_COLOR:t._defaultColor=n;break}}updateParams(t,e){switch(t){case ba.FREETEXT_SIZE:na(this,BF,JF).call(this,e);break;case ba.FREETEXT_COLOR:na(this,BF,kF).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[ba.FREETEXT_SIZE,t._defaultFontSize],[ba.FREETEXT_COLOR,t._defaultColor||dd._defaultLineColor]]}get propertiesToUpdate(){return[[ba.FREETEXT_SIZE,$i(this,GF)],[ba.FREETEXT_COLOR,$i(this,TF)]]}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const e=this.parentScale;return[-t._internalPadding*e,-(t._internalPadding+$i(this,GF))*e]}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(Fa.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),ea(this,EF,new AbortController);const t=this._uiManager.combinedSignal($i(this,EF));this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:t}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:t}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:t}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:t}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:t})}disableEditMode(){var t;this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",$i(this,gF)),this._isDraggable=!0,null==(t=$i(this,EF))||t.abort(),ea(this,EF,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(t){this._focusEventsAllowed&&(super.focusin(t),t.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(t){var e;this.width||(this.enableEditMode(),t&&this.editorDiv.focus(),null!=(e=this._initialOptions)&&e.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const t=$i(this,MF),e=ea(this,MF,na(this,BF,YF).call(this).trimEnd());if(t===e)return;const n=t=>{ea(this,MF,t),t?(na(this,BF,DF).call(this),this._uiManager.rebuild(this),na(this,BF,CF).call(this)):this.remove()};this.addCommands({cmd:()=>{n(e)},undo:()=>{n(t)},mustExec:!1}),na(this,BF,CF).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(t){this.enterInEditMode()}keydown(t){t.target===this.div&&"Enter"===t.key&&(this.enterInEditMode(),t.preventDefault())}editorDivKeydown(e){t._keyboardManager.exec(this,e)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let t,e;this.width&&(t=this.x,e=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",$i(this,gF)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:n}=this.editorDiv;if(n.fontSize=`calc(${$i(this,GF)}px * var(--scale-factor))`,n.color=$i(this,TF),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),dr(this,this.div,["dblclick","keydown"]),this.width){const[n,l]=this.parentDimensions;if(this.annotationElementId){const{position:i}=this._initialData;let[a,s]=this.getInitialTranslation();[a,s]=this.pageTranslationToScreen(a,s);const[r,o]=this.pageDimensions,[c,d]=this.pageTranslation;let u,h;switch(this.rotation){case 0:u=t+(i[0]-c)/r,h=e+this.height-(i[1]-d)/o;break;case 90:u=t+(i[0]-c)/r,h=e-(i[1]-d)/o,[a,s]=[s,-a];break;case 180:u=t-this.width+(i[0]-c)/r,h=e-(i[1]-d)/o,[a,s]=[-a,-s];break;case 270:u=t+(i[0]-c-this.height*o)/r,h=e+(i[1]-d-this.width*r)/o,[a,s]=[-s,a];break}this.setAt(u*n,h*l,a,s)}else this.setAt(t*n,e*l,this.width*n,this.height*l);na(this,BF,DF).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(e){var n,l,i;const a=e.clipboardData||window.clipboardData,{types:s}=a;if(1===s.length&&"text/plain"===s[0])return;e.preventDefault();const r=na(n=t,XF,LF).call(n,a.getData("text")||"").replaceAll(yF,"\n");if(!r)return;const o=window.getSelection();if(!o.rangeCount)return;this.editorDiv.normalize(),o.deleteFromDocument();const c=o.getRangeAt(0);if(!r.includes("\n"))return c.insertNode(document.createTextNode(r)),this.editorDiv.normalize(),void o.collapseToStart();const{startContainer:d,startOffset:u}=c,h=[],m=[];if(d.nodeType===Node.TEXT_NODE){const e=d.parentElement;if(m.push(d.nodeValue.slice(u).replaceAll(yF,"")),e!==this.editorDiv){let n=h;for(const i of this.editorDiv.childNodes)i!==e?n.push(na(l=t,XF,IF).call(l,i)):n=m}h.push(d.nodeValue.slice(0,u).replaceAll(yF,""))}else if(d===this.editorDiv){let e=h,n=0;for(const l of this.editorDiv.childNodes)n++===u&&(e=m),e.push(na(i=t,XF,IF).call(i,l))}ea(this,MF,`${h.join("\n")}${r}${m.join("\n")}`),na(this,BF,DF).call(this);const U=new Range;let p=h.reduce(((t,e)=>t+e.length),0);for(const{firstChild:t}of this.editorDiv.childNodes)if(t.nodeType===Node.TEXT_NODE){const e=t.nodeValue.length;if(p<=e){U.setStart(t,p),U.setEnd(t,p);break}p-=e}o.removeAllRanges(),o.addRange(U)}get contentDiv(){return this.editorDiv}static async deserialize(e,n,l){var i;let a=null;if(e instanceof dF){const{data:{defaultAppearanceData:{fontSize:t,fontColor:n},rect:l,rotation:i,id:s,popupRef:r},textContent:o,textPosition:c,parent:{page:{pageNumber:d}}}=e;if(!o||0===o.length)return null;a=e={annotationType:Fa.FREETEXT,color:Array.from(n),fontSize:t,value:o.join("\n"),position:c,pageIndex:d-1,rect:l.slice(0),rotation:i,id:s,deleted:!1,popupRef:r}}const s=await super.deserialize(e,n,l);return ea(s,GF,e.fontSize),ea(s,TF,ns.makeHexColor(...e.color)),ea(s,MF,na(i=t,XF,LF).call(i,e.value)),s.annotationElementId=e.id||null,s._initialData=a,s}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const n=t._internalPadding*this.parentScale,l=this.getRect(n,n),i=dd._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:$i(this,TF)),a={annotationType:Fa.FREETEXT,color:i,fontSize:$i(this,GF),value:na(this,BF,fF).call(this),pageIndex:this.pageIndex,rect:l,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?a:this.annotationElementId&&!na(this,BF,wF).call(this,a)?null:(a.id=this.annotationElementId,a)}renderAnnotationElement(e){const n=super.renderAnnotationElement(e);if(this.deleted)return n;const{style:l}=n;l.fontSize=`calc(${$i(this,GF)}px * var(--scale-factor))`,l.color=$i(this,TF),n.replaceChildren();for(const t of $i(this,MF).split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),n.append(e)}const i=t._internalPadding*this.parentScale;return e.updateEdited({rect:this.getRect(i,i),popupContent:$i(this,MF)}),n}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}};TF=new WeakMap,MF=new WeakMap,gF=new WeakMap,EF=new WeakMap,GF=new WeakMap,BF=new WeakSet,JF=function(t){const e=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--scale-factor))`,this.translate(0,-(t-$i(this,GF))*this.parentScale),ea(this,GF,t),na(this,BF,CF).call(this)},n=$i(this,GF);this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},kF=function(t){const e=t=>{ea(this,TF,this.editorDiv.style.color=t)},n=$i(this,TF);this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,n),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},YF=function(){var t;const e=[];this.editorDiv.normalize();let n=null;for(const l of this.editorDiv.childNodes)(null==n?void 0:n.nodeType)===Node.TEXT_NODE&&"BR"===l.nodeName||(e.push(na(t=xF,XF,IF).call(t,l)),n=l);return e.join("\n")},CF=function(){const[t,e]=this.parentDimensions;let n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,l=e.style.display,i=e.classList.contains("hidden");e.classList.remove("hidden"),e.style.display="hidden",t.div.append(this.div),n=e.getBoundingClientRect(),e.remove(),e.style.display=l,e.classList.toggle("hidden",i)}this.rotation%180===this.parentRotation%180?(this.width=n.width/t,this.height=n.height/e):(this.width=n.height/t,this.height=n.width/e),this.fixAndSetPosition()},XF=new WeakSet,IF=function(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(yF,"")},DF=function(){if(this.editorDiv.replaceChildren(),$i(this,MF))for(const t of $i(this,MF).split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}},fF=function(){return $i(this,MF).replaceAll(" "," ")},LF=function(t){return t.replaceAll(" "," ")},wF=function(t){const{value:e,fontSize:n,color:l,pageIndex:i}=this._initialData;return this._hasBeenMoved||t.value!==e||t.fontSize!==n||t.color.some(((t,e)=>t!==l[e]))||t.pageIndex!==i},ta(xF,XF),Hi(xF,"_freeTextDefaultContent",""),Hi(xF,"_internalPadding",0),Hi(xF,"_defaultColor",null),Hi(xF,"_defaultFontSize",10),Hi(xF,"_type","freetext"),Hi(xF,"_editorType",Fa.FREETEXT);let zF=xF;class vF{toSVGPath(){Ba("Abstract method `toSVGPath` must be implemented.")}get box(){Ba("Abstract getter `box` must be implemented.")}serialize(t,e){Ba("Abstract method `serialize` must be implemented.")}static _rescale(t,e,n,l,i,a){a||(a=new Float32Array(t.length));for(let s=0,r=t.length;s=6;l-=6)isNaN(e[l])?n.push(`L${e[l+4]} ${e[l+5]}`):n.push(`C${e[l]} ${e[l+1]} ${e[l+2]} ${e[l+3]} ${e[l+4]} ${e[l+5]}`);return na(this,rb,db).call(this,n),n.join(" ")}newFreeDrawOutline(t,e,n,l,i,a){return new iZ(t,e,n,l,i,a)}getOutlines(){var t;const e=$i(this,PF),n=$i(this,_F),l=$i(this,AF),[i,a,s,r]=$i(this,OF),o=new Float32Array(((null==(t=$i(this,lb))?void 0:t.length)??0)+2);for(let u=0,h=o.length-2;u=6;u-=6)for(let t=0;t<6;t+=2)isNaN(n[u+t])?(c[d]=c[d+1]=NaN,d+=2):(c[d]=n[u+t],c[d+1]=n[u+t+1],d+=2);return na(this,rb,mb).call(this,c,d),this.newFreeDrawOutline(c,o,$i(this,OF),$i(this,eb),$i(this,jF),$i(this,KF))}};OF=new WeakMap,_F=new WeakMap,jF=new WeakMap,KF=new WeakMap,PF=new WeakMap,AF=new WeakMap,HF=new WeakMap,qF=new WeakMap,$F=new WeakMap,tb=new WeakMap,eb=new WeakMap,nb=new WeakMap,lb=new WeakMap,ib=new WeakMap,ab=new WeakMap,sb=new WeakMap,rb=new WeakSet,ob=function(){const t=$i(this,AF).subarray(4,6),e=$i(this,AF).subarray(16,18),[n,l,i,a]=$i(this,OF);return[($i(this,HF)+(t[0]-e[0])/2-n)/i,($i(this,qF)+(t[1]-e[1])/2-l)/a,($i(this,HF)+(e[0]-t[0])/2-n)/i,($i(this,qF)+(e[1]-t[1])/2-l)/a]},cb=function(){const[t,e,n,l]=$i(this,OF),[i,a,s,r]=na(this,rb,ob).call(this);return`M${($i(this,AF)[2]-t)/n} ${($i(this,AF)[3]-e)/l} L${($i(this,AF)[4]-t)/n} ${($i(this,AF)[5]-e)/l} L${i} ${a} L${s} ${r} L${($i(this,AF)[16]-t)/n} ${($i(this,AF)[17]-e)/l} L${($i(this,AF)[14]-t)/n} ${($i(this,AF)[15]-e)/l} Z`},db=function(t){const e=$i(this,_F);t.push(`L${e[4]} ${e[5]} Z`)},ub=function(t){const[e,n,l,i]=$i(this,OF),a=$i(this,AF).subarray(4,6),s=$i(this,AF).subarray(16,18),[r,o,c,d]=na(this,rb,ob).call(this);t.push(`L${(a[0]-e)/l} ${(a[1]-n)/i} L${r} ${o} L${c} ${d} L${(s[0]-e)/l} ${(s[1]-n)/i}`)},hb=function(t){const e=$i(this,AF),[n,l,i,a]=$i(this,OF),[s,r,o,c]=na(this,rb,ob).call(this),d=new Float32Array(36);return d.set([NaN,NaN,NaN,NaN,(e[2]-n)/i,(e[3]-l)/a,NaN,NaN,NaN,NaN,(e[4]-n)/i,(e[5]-l)/a,NaN,NaN,NaN,NaN,s,r,NaN,NaN,NaN,NaN,o,c,NaN,NaN,NaN,NaN,(e[16]-n)/i,(e[17]-l)/a,NaN,NaN,NaN,NaN,(e[14]-n)/i,(e[15]-l)/a],0),this.newFreeDrawOutline(d,t,$i(this,OF),$i(this,eb),$i(this,jF),$i(this,KF))},mb=function(t,e){const n=$i(this,_F);return t.set([NaN,NaN,NaN,NaN,n[4],n[5]],e),e+6},Ub=function(t,e){const n=$i(this,AF).subarray(4,6),l=$i(this,AF).subarray(16,18),[i,a,s,r]=$i(this,OF),[o,c,d,u]=na(this,rb,ob).call(this);return t.set([NaN,NaN,NaN,NaN,(n[0]-i)/s,(n[1]-a)/r,NaN,NaN,NaN,NaN,o,c,NaN,NaN,NaN,NaN,d,u,NaN,NaN,NaN,NaN,(l[0]-i)/s,(l[1]-a)/r],e),e+24},ta(pb,ib,8),ta(pb,ab,2),ta(pb,sb,$i(pb,ib)+$i(pb,ab));let Fb=pb;var bb,Zb,Nb,Rb,Sb,Wb,Vb,Qb,yb,Tb,Mb,gb,Eb,Gb,Bb,Jb,kb,Yb,Cb,Xb,Ib,Db,fb,Lb,wb,xb,zb,vb,Ob,_b,jb,Kb,Pb,Ab,Hb,qb,$b,tZ,eZ,nZ,lZ;class iZ extends vF{constructor(t,e,n,l,i,a){super(),ta(this,Qb),ta(this,bb),ta(this,Zb,new Float32Array(4)),ta(this,Nb),ta(this,Rb),ta(this,Sb),ta(this,Wb),ta(this,Vb),ea(this,Vb,t),ea(this,Sb,e),ea(this,bb,n),ea(this,Wb,l),ea(this,Nb,i),ea(this,Rb,a),this.lastPoint=[NaN,NaN],na(this,Qb,yb).call(this,a);const[s,r,o,c]=$i(this,Zb);for(let d=0,u=t.length;dt[0]-e[0]||t[1]-e[1]||t[2]-e[2]));const t=[];for(const e of $i(this,gb))e[3]?(t.push(...na(this,Gb,Cb).call(this,e)),na(this,Gb,kb).call(this,e)):(na(this,Gb,Yb).call(this,e),t.push(...na(this,Gb,Cb).call(this,e)));return na(this,Gb,Bb).call(this,t)}}Tb=new WeakMap,Mb=new WeakMap,gb=new WeakMap,Eb=new WeakMap,Gb=new WeakSet,Bb=function(t){const e=[],n=new Set;for(const a of t){const[t,n,l]=a;e.push([t,n,a],[t,l,a])}e.sort(((t,e)=>t[1]-e[1]||t[0]-e[0]));for(let a=0,s=e.length;a0;){const t=n.values().next().value;let[e,a,s,r,o]=t;n.delete(t);let c=e,d=a;for(i=[e,s],l.push(i);;){let t;if(n.has(r))t=r;else{if(!n.has(o))break;t=o}n.delete(t),[e,a,s,r,o]=t,c!==e&&(i.push(c,d,e,d===a?a:s),c=e),d=d===a?s:a}i.push(c,d)}return new sZ(l,$i(this,Tb),$i(this,Mb))},Jb=function(t){const e=$i(this,Eb);let n=0,l=e.length-1;for(;n<=l;){const i=n+l>>1,a=e[i][0];if(a===t)return i;a=0;l--){const[n,i]=$i(this,Eb)[l];if(n!==t)break;if(n===t&&i===e)return void $i(this,Eb).splice(l,1)}},Cb=function(t){const[e,n,l]=t,i=[[e,n,l]],a=na(this,Gb,Jb).call(this,l);for(let s=0;s=t){if(r>n)i[l][1]=n;else{if(1===a)return[];i.splice(l,1),l--,a--}continue}i[l][2]=t,r>n&&i.push([e,n,r])}}}return i};class sZ extends vF{constructor(t,e,n){super(),ta(this,Xb),ta(this,Ib),ea(this,Ib,t),ea(this,Xb,e),this.lastPoint=n}toSVGPath(){const t=[];for(const e of $i(this,Ib)){let[n,l]=e;t.push(`M${n} ${l}`);for(let i=2;i-1?(ea(this,SZ,!0),na(this,gZ,GZ).call(this,e),na(this,gZ,CZ).call(this)):$i(this,hZ)&&(ea(this,dZ,e.anchorNode),ea(this,uZ,e.anchorOffset),ea(this,FZ,e.focusNode),ea(this,bZ,e.focusOffset),na(this,gZ,EZ).call(this),na(this,gZ,CZ).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const e=t.prototype;return Ca(this,"_keyboardManager",new Sr([[["ArrowLeft","mac+ArrowLeft"],e._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],e._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],e._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],e._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:$i(this,SZ)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:$i(this,TZ),methodOfCreation:$i(this,MZ)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(t){return{numberOfColors:t.get("color").size}}static initialize(e,n){var l;dd.initialize(e,n),t._defaultColor||(t._defaultColor=(null==(l=n.highlightColors)?void 0:l.values().next().value)||"#fff066")}static updateDefaultParams(e,n){switch(e){case ba.HIGHLIGHT_DEFAULT_COLOR:t._defaultColor=n;break;case ba.HIGHLIGHT_THICKNESS:t._defaultThickness=n;break}}translateInPage(t,e){}get toolbarPosition(){return $i(this,WZ)}updateParams(t,e){switch(t){case ba.HIGHLIGHT_COLOR:na(this,gZ,BZ).call(this,e);break;case ba.HIGHLIGHT_THICKNESS:na(this,gZ,JZ).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[ba.HIGHLIGHT_DEFAULT_COLOR,t._defaultColor],[ba.HIGHLIGHT_THICKNESS,t._defaultThickness]]}get propertiesToUpdate(){return[[ba.HIGHLIGHT_COLOR,this.color||t._defaultColor],[ba.HIGHLIGHT_THICKNESS,$i(this,TZ)||t._defaultThickness],[ba.HIGHLIGHT_FREE,$i(this,SZ)]]}async addEditToolbar(){const t=await super.addEditToolbar();return t?(this._uiManager.highlightColors&&(ea(this,UZ,new cZ({editor:this})),t.addColorPicker($i(this,UZ))),t):null}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(na(this,gZ,LZ).call(this))}getBaseTranslation(){return[0,0]}getRect(t,e){return super.getRect(t,e,na(this,gZ,LZ).call(this))}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),t&&this.div.focus()}remove(){na(this,gZ,YZ).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(na(this,gZ,CZ).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var e;let n=!1;this.parent&&!t?na(this,gZ,YZ).call(this):t&&(na(this,gZ,CZ).call(this,t),n=!this.parent&&(null==(e=this.div)?void 0:e.classList.contains("selectedEditor"))),super.setParent(t),this.show(this._isVisible),n&&this.select()}rotate(e){var n,l,i;const{drawLayer:a}=this.parent;let s;$i(this,SZ)?(e=(e-this.rotation+360)%360,s=na(n=t,XZ,IZ).call(n,$i(this,NZ).box,e)):s=na(l=t,XZ,IZ).call(l,[this.x,this.y,this.width,this.height],e),a.updateProperties($i(this,RZ),{bbox:s,root:{"data-main-rotation":e}}),a.updateProperties($i(this,QZ),{bbox:na(i=t,XZ,IZ).call(i,$i(this,pZ).box,e),root:{"data-main-rotation":e}})}render(){if(this.div)return this.div;const t=super.render();$i(this,yZ)&&(t.setAttribute("aria-label",$i(this,yZ)),t.setAttribute("role","mark")),$i(this,SZ)?t.classList.add("free"):this.div.addEventListener("keydown",na(this,gZ,DZ).bind(this),{signal:this._uiManager._signal});const e=ea(this,ZZ,document.createElement("div"));t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal",e.style.clipPath=$i(this,mZ);const[n,l]=this.parentDimensions;return this.setDims(this.width*n,this.height*l),dr(this,$i(this,ZZ),["pointerover","pointerleave"]),this.enableEditing(),t}pointerover(){var t;this.isSelected||null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!0}})}pointerleave(){var t;this.isSelected||null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!1}})}_moveCaret(t){switch(this.parent.unselect(this),t){case 0:case 2:na(this,gZ,fZ).call(this,!0);break;case 1:case 3:na(this,gZ,fZ).call(this,!1);break}}select(){var t;super.select(),$i(this,QZ)&&(null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{hovered:!1,selected:!0}}))}unselect(){var t;super.unselect(),$i(this,QZ)&&(null==(t=this.parent)||t.drawLayer.updateProperties($i(this,QZ),{rootClass:{selected:!1}}),$i(this,SZ)||na(this,gZ,fZ).call(this,!1))}get _mustFixPosition(){return!$i(this,SZ)}show(t=this._isVisible){super.show(t),this.parent&&(this.parent.drawLayer.updateProperties($i(this,RZ),{rootClass:{hidden:!t}}),this.parent.drawLayer.updateProperties($i(this,QZ),{rootClass:{hidden:!t}}))}static startHighlighting(t,e,{target:n,x:l,y:i}){const{x:a,y:s,width:r,height:o}=n.getBoundingClientRect(),c=new AbortController,d=t.combinedSignal(c),u=e=>{c.abort(),na(this,XZ,vZ).call(this,t,e)};window.addEventListener("blur",u,{signal:d}),window.addEventListener("pointerup",u,{signal:d}),window.addEventListener("pointerdown",Vs,{capture:!0,passive:!1,signal:d}),window.addEventListener("contextmenu",Ws,{signal:d}),n.addEventListener("pointermove",na(this,XZ,zZ).bind(this,t),{signal:d}),this._freeHighlight=new rZ({x:l,y:i},[a,s,r,o],t.scale,this._defaultThickness/2,e,.001),({id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0))}static async deserialize(t,e,n){var l,i,a,s;let r=null;if(t instanceof ZF){const{data:{quadPoints:e,rect:n,rotation:l,id:i,color:a,opacity:s,popupRef:o},parent:{page:{pageNumber:c}}}=t;r=t={annotationType:Fa.HIGHLIGHT,color:Array.from(a),opacity:s,quadPoints:e,boxes:null,pageIndex:c-1,rect:n.slice(0),rotation:l,id:i,deleted:!1,popupRef:o}}else if(t instanceof bF){const{data:{inkLists:e,rect:n,rotation:l,id:i,color:a,borderStyle:{rawWidth:s},popupRef:o},parent:{page:{pageNumber:c}}}=t;r=t={annotationType:Fa.HIGHLIGHT,color:Array.from(a),thickness:s,inkLists:e,boxes:null,pageIndex:c-1,rect:n.slice(0),rotation:l,id:i,deleted:!1,popupRef:o}}const{color:o,quadPoints:c,inkLists:d,opacity:u}=t,h=await super.deserialize(t,e,n);h.color=ns.makeHexColor(...o),ea(h,VZ,u||1),d&&ea(h,TZ,t.thickness),h.annotationElementId=t.id||null,h._initialData=r;const[m,U]=h.pageDimensions,[p,F]=h.pageTranslation;if(c){const t=ea(h,hZ,[]);for(let e=0;e=0)ea(this,RZ,e),ea(this,mZ,n),this.parent.drawLayer.finalizeDraw(e,{bbox:t.box,path:{d:t.toSVGPath()}}),ea(this,QZ,this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:$i(this,pZ).box,path:{d:$i(this,pZ).toSVGPath()}},!0));else if(this.parent){const e=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties($i(this,RZ),{bbox:na(l=_Z,XZ,IZ).call(l,$i(this,NZ).box,(e-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties($i(this,QZ),{bbox:na(i=_Z,XZ,IZ).call(i,$i(this,pZ).box,e),path:{d:$i(this,pZ).toSVGPath()}})}const[a,s,r,o]=t.box;switch(this.rotation){case 0:this.x=a,this.y=s,this.width=r,this.height=o;break;case 90:{const[t,e]=this.parentDimensions;this.x=s,this.y=1-a,this.width=r*e/t,this.height=o*t/e;break}case 180:this.x=1-a,this.y=1-s,this.width=r,this.height=o;break;case 270:{const[t,e]=this.parentDimensions;this.x=1-s,this.y=a,this.width=r*e/t,this.height=o*t/e;break}}const{lastPoint:c}=$i(this,pZ);ea(this,WZ,[(c[0]-a)/r,(c[1]-s)/o])},BZ=function(t){const e=(t,e)=>{var n,l;this.color=t,ea(this,VZ,e),null==(n=this.parent)||n.drawLayer.updateProperties($i(this,RZ),{root:{fill:t,"fill-opacity":e}}),null==(l=$i(this,UZ))||l.updateColor(t)},n=this.color,l=$i(this,VZ);this.addCommands({cmd:e.bind(this,t,_Z._defaultOpacity),undo:e.bind(this,n,l),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(t)},!0)},JZ=function(t){const e=$i(this,TZ),n=t=>{ea(this,TZ,t),na(this,gZ,kZ).call(this,t)};this.addCommands({cmd:n.bind(this,t),undo:n.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ba.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:t},!0)},kZ=function(t){if(!$i(this,SZ))return;na(this,gZ,GZ).call(this,{highlightOutlines:$i(this,NZ).getNewOutline(t/2)}),this.fixAndSetPosition();const[e,n]=this.parentDimensions;this.setDims(this.width*e,this.height*n)},YZ=function(){null===$i(this,RZ)||!this.parent||(this.parent.drawLayer.remove($i(this,RZ)),ea(this,RZ,null),this.parent.drawLayer.remove($i(this,QZ)),ea(this,QZ,null))},CZ=function(t=this.parent){null===$i(this,RZ)&&(({id:la(this,RZ)._,clipPathId:la(this,mZ)._}=t.drawLayer.draw({bbox:$i(this,NZ).box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":$i(this,VZ)},rootClass:{highlight:!0,free:$i(this,SZ)},path:{d:$i(this,NZ).toSVGPath()}},!1,!0)),ea(this,QZ,t.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:$i(this,SZ)},bbox:$i(this,pZ).box,path:{d:$i(this,pZ).toSVGPath()}},$i(this,SZ))),$i(this,ZZ)&&($i(this,ZZ).style.clipPath=$i(this,mZ)))},XZ=new WeakSet,IZ=function([t,e,n,l],i){switch(i){case 90:return[1-e-l,t,l,n];case 180:return[1-t-n,1-e-l,n,l];case 270:return[e,1-t-n,l,n]}return[t,e,n,l]},DZ=function(t){_Z._keyboardManager.exec(this,t)},fZ=function(t){if(!$i(this,dZ))return;const e=window.getSelection();t?e.setPosition($i(this,dZ),$i(this,uZ)):e.setPosition($i(this,FZ),$i(this,bZ))},LZ=function(){return $i(this,SZ)?this.rotation:0},wZ=function(){if($i(this,SZ))return null;const[t,e]=this.pageDimensions,[n,l]=this.pageTranslation,i=$i(this,hZ),a=new Float32Array(8*i.length);let s=0;for(const{x:r,y:o,width:c,height:d}of i){const i=r*t+n,u=(1-o)*e+l;a[s]=a[s+4]=i,a[s+1]=a[s+3]=u,a[s+2]=a[s+6]=i+c*t,a[s+5]=a[s+7]=u-d*e,s+=8}return a},xZ=function(t){return $i(this,NZ).serialize(t,na(this,gZ,LZ).call(this))},zZ=function(t,e){this._freeHighlight.add(e)&&t.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})},vZ=function(t,e){this._freeHighlight.isEmpty()?t.drawLayer.remove(this._freeHighlightId):t.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},OZ=function(t){const{color:e}=this._initialData;return t.color.some(((t,n)=>t!==e[n]))},ta(_Z,XZ),Hi(_Z,"_defaultColor",null),Hi(_Z,"_defaultOpacity",1),Hi(_Z,"_defaultThickness",12),Hi(_Z,"_type","highlight"),Hi(_Z,"_editorType",Fa.HIGHLIGHT),Hi(_Z,"_freeHighlightId",-1),Hi(_Z,"_freeHighlight",null),Hi(_Z,"_freeHighlightClipId","");let jZ=_Z;var KZ,PZ,AZ,HZ,qZ,$Z,tN,eN,nN,lN,iN,aN,sN,rN,oN,cN,dN,uN,hN;class mN{constructor(){ta(this,KZ,Object.create(null))}updateProperty(t,e){this[t]=e,this.updateSVGProperty(t,e)}updateProperties(t){if(t)for(const[e,n]of Object.entries(t))this.updateProperty(e,n)}updateSVGProperty(t,e){$i(this,KZ)[t]=e}toSVGProperties(){const t=$i(this,KZ);return ea(this,KZ,Object.create(null)),{root:t}}reset(){ea(this,KZ,Object.create(null))}updateAll(t=this){this.updateProperties(t)}clone(){Ba("Not implemented")}}KZ=new WeakMap;const UN=class t extends dd{constructor(t){super(t),ta(this,iN),ta(this,PZ,null),ta(this,AZ),Hi(this,"_drawId",null),ea(this,AZ,t.mustBeCommitted||!1),t.drawOutlines&&(na(this,iN,aN).call(this,t),na(this,iN,oN).call(this))}static _mergeSVGProperties(t,e){const n=new Set(Object.keys(t));for(const[l,i]of Object.entries(e))n.has(l)?Object.assign(t[l],i):t[l]=i;return t}static getDefaultDrawingOptions(t){Ba("Not implemented")}static get typesMap(){Ba("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(e,n){const l=this.typesMap.get(e);l&&this._defaultDrawingOptions.updateProperty(l,n),this._currentParent&&($i(t,HZ).updateProperty(l,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const n=this.constructor.typesMap.get(t);n&&this._updateProperty(t,n,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[n,l]of this.typesMap)t.push([n,e[l]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[n,l]of this.constructor.typesMap)t.push([n,e[l]]);return t}_updateProperty(t,e,n){const l=this._drawingOptions,i=l[e],a=t=>{var n;l.updateProperty(e,t);const i=$i(this,PZ).updateProperty(e,t);i&&na(this,iN,uN).call(this,i),null==(n=this.parent)||n.drawLayer.updateProperties(this._drawId,l.toSVGProperties())};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathResizingSVGProperties(na(this,iN,dN).call(this)),{bbox:na(this,iN,hN).call(this)}))}_onResized(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathResizedSVGProperties(na(this,iN,dN).call(this)),{bbox:na(this,iN,hN).call(this)}))}_onTranslating(t,e){var n;null==(n=this.parent)||n.drawLayer.updateProperties(this._drawId,{bbox:na(this,iN,hN).call(this,t,e)})}_onTranslated(){var e;null==(e=this.parent)||e.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties($i(this,PZ).getPathTranslatedSVGProperties(na(this,iN,dN).call(this),this.parentDimensions),{bbox:na(this,iN,hN).call(this)}))}_onStartDragging(){var t;null==(t=this.parent)||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){var t;null==(t=this.parent)||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,$i(this,AZ)&&(ea(this,AZ,!1),this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){na(this,iN,rN).call(this),super.remove()}rebuild(){this.parent&&(super.rebuild(),null!==this.div&&(na(this,iN,oN).call(this),na(this,iN,uN).call(this,$i(this,PZ).box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var e;let n=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),na(this,iN,rN).call(this)):t&&(this._uiManager.addShouldRescale(this),na(this,iN,oN).call(this,t),n=!this.parent&&(null==(e=this.div)?void 0:e.classList.contains("selectedEditor"))),super.setParent(t),n&&this.select()}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,t._mergeSVGProperties({bbox:na(this,iN,hN).call(this)},$i(this,PZ).updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&na(this,iN,uN).call(this,$i(this,PZ).updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;const t=super.render();t.classList.add("draw");const e=document.createElement("div");t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal";const[n,l]=this.parentDimensions;return this.setDims(this.width*n,this.height*l),this._uiManager.addShouldRescale(this),this.disableEditing(),t}static createDrawerInstance(t,e,n,l,i){Ba("Not implemented")}static startDrawing(e,n,l,i){var a;const{target:s,offsetX:r,offsetY:o,pointerId:c,pointerType:d}=i;if($i(t,eN)&&$i(t,eN)!==d)return;const{viewport:{rotation:u}}=e,{width:h,height:m}=s.getBoundingClientRect(),U=ea(t,qZ,new AbortController),p=e.combinedSignal(U);$i(t,tN)||ea(t,tN,c),$i(t,eN)??ea(t,eN,d),window.addEventListener("pointerup",(e=>{var n;$i(t,tN)===e.pointerId?this._endDraw(e):null==(n=$i(t,nN))||n.delete(e.pointerId)}),{signal:p}),window.addEventListener("pointercancel",(e=>{var n;$i(t,tN)===e.pointerId?this._currentParent.endDrawingSession():null==(n=$i(t,nN))||n.delete(e.pointerId)}),{signal:p}),window.addEventListener("pointerdown",(e=>{$i(t,eN)===e.pointerType&&(($i(t,nN)||ea(t,nN,new Set)).add(e.pointerId),$i(t,HZ).isCancellable()&&($i(t,HZ).removeLastElement(),$i(t,HZ).isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))}),{capture:!0,passive:!1,signal:p}),window.addEventListener("contextmenu",Ws,{signal:p}),s.addEventListener("pointermove",this._drawMove.bind(this),{signal:p}),s.addEventListener("touchmove",(e=>{e.timeStamp===$i(t,lN)&&Vs(e)}),{signal:p}),e.toggleDrawing(),null==(a=n._editorUndoBar)||a.hide(),$i(t,HZ)?e.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).startNew(r,o,h,m,u)):(n.updateUIForDefaultProperties(this),ea(t,HZ,this.createDrawerInstance(r,o,h,m,u)),ea(t,$Z,this.getDefaultDrawingOptions()),this._currentParent=e,({id:this._currentDrawId}=e.drawLayer.draw(this._mergeSVGProperties($i(t,$Z).toSVGProperties(),$i(t,HZ).defaultSVGProperties),!0,!1)))}static _drawMove(e){var n;if(ea(t,lN,-1),!$i(t,HZ))return;const{offsetX:l,offsetY:i,pointerId:a}=e;if($i(t,tN)===a){if((null==(n=$i(t,nN))?void 0:n.size)>=1)return void this._endDraw(e);this._currentParent.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).add(l,i)),ea(t,lN,e.timeStamp),Vs(e)}}static _cleanup(e){e&&(this._currentDrawId=-1,this._currentParent=null,ea(t,HZ,null),ea(t,$Z,null),ea(t,eN,null),ea(t,lN,NaN)),$i(t,qZ)&&($i(t,qZ).abort(),ea(t,qZ,null),ea(t,tN,NaN),ea(t,nN,null))}static _endDraw(e){const n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),e&&n.drawLayer.updateProperties(this._currentDrawId,$i(t,HZ).end(e.offsetX,e.offsetY)),this.supportMultipleDrawings){const e=$i(t,HZ),l=this._currentDrawId,i=e.getLastElement();return void n.addCommands({cmd:()=>{n.drawLayer.updateProperties(l,e.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(l,e.removeLastElement())},mustExec:!1,type:ba.DRAW_STEP})}this.endDrawing(!1)}}static endDrawing(e){const n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(ba.DRAW_STEP),!$i(t,HZ).isEmpty()){const{pageDimensions:[l,i],scale:a}=n,s=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:$i(t,HZ).getOutlines(l*a,i*a,a,this._INNER_MARGIN),drawingOptions:$i(t,$Z),mustBeCommitted:!e});return this._cleanup(!0),s}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,n,l,i,a){Ba("Not implemented")}static async deserialize(t,e,n){var l,i;const{rawDims:{pageWidth:a,pageHeight:s,pageX:r,pageY:o}}=e.viewport,c=this.deserializeDraw(r,o,a,s,this._INNER_MARGIN,t),d=await super.deserialize(t,e,n);return d.createDrawingOptions(t),na(l=d,iN,aN).call(l,{drawOutlines:c}),na(i=d,iN,oN).call(i),d.onScaleChanging(),d.rotate(),d}serializeDraw(t){const[e,n]=this.pageTranslation,[l,i]=this.pageDimensions;return $i(this,PZ).serialize([e,n,l,i],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};PZ=new WeakMap,AZ=new WeakMap,HZ=new WeakMap,qZ=new WeakMap,$Z=new WeakMap,tN=new WeakMap,eN=new WeakMap,nN=new WeakMap,lN=new WeakMap,iN=new WeakSet,aN=function({drawOutlines:t,drawId:e,drawingOptions:n}){ea(this,PZ,t),this._drawingOptions||(this._drawingOptions=n),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties)):this._drawId=na(this,iN,sN).call(this,t,this.parent),na(this,iN,uN).call(this,t.box)},sN=function(t,e){const{id:n}=e.drawLayer.draw(UN._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return n},rN=function(){null===this._drawId||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())},oN=function(t=this.parent){if(null===this._drawId||this.parent!==t){if(null!==this._drawId)return void this.parent.drawLayer.updateParent(this._drawId,t.drawLayer);this._drawingOptions.updateAll(),this._drawId=na(this,iN,sN).call(this,$i(this,PZ),t)}},cN=function([t,e,n,l]){const{parentDimensions:[i,a],rotation:s}=this;switch(s){case 90:return[e,1-t,n*(a/i),l*(i/a)];case 180:return[1-t,1-e,n,l];case 270:return[1-e,t,n*(a/i),l*(i/a)];default:return[t,e,n,l]}},dN=function(){const{x:t,y:e,width:n,height:l,parentDimensions:[i,a],rotation:s}=this;switch(s){case 90:return[1-e,t,n*(i/a),l*(a/i)];case 180:return[1-t,1-e,n,l];case 270:return[e,1-t,n*(i/a),l*(a/i)];default:return[t,e,n,l]}},uN=function(t){if([this.x,this.y,this.width,this.height]=na(this,iN,cN).call(this,t),this.div){this.fixAndSetPosition();const[t,e]=this.parentDimensions;this.setDims(this.width*t,this.height*e)}this._onResized()},hN=function(){const{x:t,y:e,width:n,height:l,rotation:i,parentRotation:a,parentDimensions:[s,r]}=this;switch((4*i+a)/90){case 1:return[1-e-l,t,l,n];case 2:return[1-t-n,1-e-l,n,l];case 3:return[e,1-t-n,l,n];case 4:return[t,e-n*(s/r),l*(r/s),n*(s/r)];case 5:return[1-e,t,n*(s/r),l*(r/s)];case 6:return[1-t-l*(r/s),1-e,l*(r/s),n*(s/r)];case 7:return[e-n*(s/r),1-t-l*(r/s),n*(s/r),l*(r/s)];case 8:return[t-n,e-l,n,l];case 9:return[1-e,t-n,l,n];case 10:return[1-t,1-e,n,l];case 11:return[e-l,1-t,l,n];case 12:return[t-l*(r/s),e,l*(r/s),n*(s/r)];case 13:return[1-e-n*(s/r),t-l*(r/s),n*(s/r),l*(r/s)];case 14:return[1-t,1-e-n*(s/r),l*(r/s),n*(s/r)];case 15:return[e,1-t,n*(s/r),l*(r/s)];default:return[t,e,n,l]}},Hi(UN,"_currentDrawId",-1),Hi(UN,"_currentParent",null),ta(UN,HZ,null),ta(UN,qZ,null),ta(UN,$Z,null),ta(UN,tN,NaN),ta(UN,eN,null),ta(UN,nN,null),ta(UN,lN,NaN),Hi(UN,"_INNER_MARGIN",3);let pN=UN;var FN,bN,ZN,NN,RN,SN,WN,VN,QN,yN,TN,MN,gN,EN,GN,BN,JN,kN,YN,CN,XN,IN,DN,fN,LN,wN,xN;class zN{constructor(t,e,n,l,i,a){ta(this,MN),ta(this,FN,new Float64Array(6)),ta(this,bN),ta(this,ZN),ta(this,NN),ta(this,RN),ta(this,SN),ta(this,WN,""),ta(this,VN,0),ta(this,QN,new ON),ta(this,yN),ta(this,TN),ea(this,yN,n),ea(this,TN,l),ea(this,NN,i),ea(this,RN,a),[t,e]=na(this,MN,gN).call(this,t,e);const s=ea(this,bN,[NaN,NaN,NaN,NaN,t,e]);ea(this,SN,[t,e]),ea(this,ZN,[{line:s,points:$i(this,SN)}]),$i(this,FN).set(s,0)}updateProperty(t,e){"stroke-width"===t&&ea(this,RN,e)}isEmpty(){return!$i(this,ZN)||0===$i(this,ZN).length}isCancellable(){return $i(this,SN).length<=10}add(t,e){[t,e]=na(this,MN,gN).call(this,t,e);const[n,l,i,a]=$i(this,FN).subarray(2,6),s=t-i,r=e-a;return Math.hypot($i(this,yN)*s,$i(this,TN)*r)<=2?null:($i(this,SN).push(t,e),isNaN(n)?($i(this,FN).set([i,a,t,e],2),$i(this,bN).push(NaN,NaN,NaN,NaN,t,e),{path:{d:this.toSVGPath()}}):(isNaN($i(this,FN)[0])&&$i(this,bN).splice(6,6),$i(this,FN).set([n,l,i,a,t,e],0),$i(this,bN).push(...vF.createBezierPoints(n,l,i,a,t,e)),{path:{d:this.toSVGPath()}}))}end(t,e){const n=this.add(t,e);return n||(2===$i(this,SN).length?{path:{d:this.toSVGPath()}}:null)}startNew(t,e,n,l,i){ea(this,yN,n),ea(this,TN,l),ea(this,NN,i),[t,e]=na(this,MN,gN).call(this,t,e);const a=ea(this,bN,[NaN,NaN,NaN,NaN,t,e]);ea(this,SN,[t,e]);const s=$i(this,ZN).at(-1);return s&&(s.line=new Float32Array(s.line),s.points=new Float32Array(s.points)),$i(this,ZN).push({line:a,points:$i(this,SN)}),$i(this,FN).set(a,0),ea(this,VN,0),this.toSVGPath(),null}getLastElement(){return $i(this,ZN).at(-1)}setLastElement(t){return $i(this,ZN)?($i(this,ZN).push(t),ea(this,bN,t.line),ea(this,SN,t.points),ea(this,VN,0),{path:{d:this.toSVGPath()}}):$i(this,QN).setLastElement(t)}removeLastElement(){if(!$i(this,ZN))return $i(this,QN).removeLastElement();$i(this,ZN).pop(),ea(this,WN,"");for(let t=0,e=$i(this,ZN).length;tt??NaN)),u,h,m,U),points:p(r[t].map((t=>t??NaN)),u,h,m,U)});const F=new t;return F.build(d,l,i,1,o,c,a),F}get box(){return $i(this,EN)}updateProperty(t,e){return"stroke-width"===t?na(this,DN,xN).call(this,e):null}updateParentDimensions([t,e],n){const[l,i]=na(this,DN,fN).call(this);ea(this,kN,t),ea(this,YN,e),ea(this,CN,n);const[a,s]=na(this,DN,fN).call(this),r=a-l,o=s-i,c=$i(this,EN);return c[0]-=r,c[1]-=o,c[2]+=2*r,c[3]+=2*o,c}updateRotation(t){return ea(this,GN,t),{path:{transform:this.rotationTransform}}}get viewBox(){return $i(this,EN).map(vF.svgRound).join(" ")}get defaultProperties(){const[t,e]=$i(this,EN);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`}}}get rotationTransform(){const[,,t,e]=$i(this,EN);let n=0,l=0,i=0,a=0,s=0,r=0;switch($i(this,GN)){case 90:l=e/t,i=-t/e,s=t;break;case 180:n=-1,a=-1,s=t,r=e;break;case 270:l=-e/t,i=t/e,r=e;break;default:return""}return`matrix(${n} ${l} ${i} ${a} ${vF.svgRound(s)} ${vF.svgRound(r)})`}getPathResizingSVGProperties([t,e,n,l]){const[i,a]=na(this,DN,fN).call(this),[s,r,o,c]=$i(this,EN);if(Math.abs(o-i)<=vF.PRECISION||Math.abs(c-a)<=vF.PRECISION){const i=t+n/2-(s+o/2),a=e+l/2-(r+c/2);return{path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:`${this.rotationTransform} translate(${i} ${a})`}}}const d=(n-2*i)/(o-2*i),u=(l-2*a)/(c-2*a),h=o/n,m=c/l;return{path:{"transform-origin":`${vF.svgRound(s)} ${vF.svgRound(r)}`,transform:`${this.rotationTransform} scale(${h} ${m}) translate(${vF.svgRound(i)} ${vF.svgRound(a)}) scale(${d} ${u}) translate(${vF.svgRound(-i)} ${vF.svgRound(-a)})`}}}getPathResizedSVGProperties([t,e,n,l]){const[i,a]=na(this,DN,fN).call(this),s=$i(this,EN),[r,o,c,d]=s;if(s[0]=t,s[1]=e,s[2]=n,s[3]=l,Math.abs(c-i)<=vF.PRECISION||Math.abs(d-a)<=vF.PRECISION){const i=t+n/2-(r+c/2),a=e+l/2-(o+d/2);for(const{line:t,points:e}of $i(this,JN))vF._translate(t,i,a,t),vF._translate(e,i,a,e);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const u=(n-2*i)/(c-2*i),h=(l-2*a)/(d-2*a),m=-u*(r+i)+t+i,U=-h*(o+a)+e+a;if(1!==u||1!==h||0!==m||0!==U)for(const{line:p,points:F}of $i(this,JN))vF._rescale(p,m,U,u,h,p),vF._rescale(F,m,U,u,h,F);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([t,e],n){const[l,i]=n,a=$i(this,EN),s=t-a[0],r=e-a[1];if($i(this,kN)===l&&$i(this,YN)===i)for(const{line:o,points:c}of $i(this,JN))vF._translate(o,s,r,o),vF._translate(c,s,r,c);else{const t=$i(this,kN)/l,e=$i(this,YN)/i;ea(this,kN,l),ea(this,YN,i);for(const{line:n,points:l}of $i(this,JN))vF._rescale(n,s,r,t,e,n),vF._rescale(l,s,r,t,e,l);a[2]*=t,a[3]*=e}return a[0]=t,a[1]=e,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${vF.svgRound(t)} ${vF.svgRound(e)}`}}}get defaultSVGProperties(){const t=$i(this,EN);return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${vF.svgRound(t[0])} ${vF.svgRound(t[1])}`,transform:this.rotationTransform||null},bbox:t}}};EN=new WeakMap,GN=new WeakMap,BN=new WeakMap,JN=new WeakMap,kN=new WeakMap,YN=new WeakMap,CN=new WeakMap,XN=new WeakMap,IN=new WeakMap,DN=new WeakSet,fN=function(t=$i(this,IN)){const e=$i(this,BN)+t/2*$i(this,CN);return $i(this,XN)%180===0?[e/$i(this,kN),e/$i(this,YN)]:[e/$i(this,YN),e/$i(this,kN)]},LN=function(){const[t,e,n,l]=$i(this,EN),[i,a]=na(this,DN,fN).call(this,0);return[t+i,e+a,n-2*i,l-2*a]},wN=function(){const t=ea(this,EN,new Float32Array([1/0,1/0,-1/0,-1/0]));for(const{line:l}of $i(this,JN)){if(l.length<=12){for(let e=4,n=l.length;et!==e[n]))||t.thickness!==n||t.opacity!==l||t.pageIndex!==i},Hi(HN,"_type","ink"),Hi(HN,"_editorType",Fa.INK),Hi(HN,"_defaultDrawingOptions",null);let qN=HN;var $N,tR,eR,nR,lR,iR,aR,sR,rR,oR,cR,dR,uR,hR,mR,UR,pR,FR,bR;const ZR=class extends dd{constructor(t){super({...t,name:"stampEditor"}),ta(this,cR),ta(this,$N,null),ta(this,tR,null),ta(this,eR,null),ta(this,nR,null),ta(this,lR,null),ta(this,iR,""),ta(this,aR,null),ta(this,sR,null),ta(this,rR,!1),ta(this,oR,!1),ea(this,nR,t.bitmapUrl),ea(this,lR,t.bitmapFile)}static initialize(t,e){dd.initialize(t,e)}static get supportedTypes(){return Ca(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map((t=>`image/${t}`)))}static get supportedTypesStr(){return Ca(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(t){return this.supportedTypes.includes(t)}static paste(t,e){e.pasteEditor(Fa.STAMP,{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var t;return{type:"stamp",hasAltText:!(null==(t=this.altTextData)||!t.altText)}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:n}=this._uiManager;if(!n)throw new Error("No ML.");if(!await n.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:l,width:i,height:a}=t||this.copyCanvas(null,null,!0).imageData,s=await n.guess({name:"altText",request:{data:l,width:i,height:a,channels:l.length/(i*a)}});if(!s)throw new Error("No response from the AI service.");if(s.error)throw new Error("Error from the AI service.");if(s.cancel)return null;if(!s.output)throw new Error("No valid response from the AI service.");const r=s.output;return await this.setGuessedAltText(r),e&&!this.hasAltTextData()&&(this.altTextData={alt:r,decorative:!1}),r}remove(){var t;$i(this,tR)&&(ea(this,$N,null),this._uiManager.imageManager.deleteId($i(this,tR)),null==(t=$i(this,aR))||t.remove(),ea(this,aR,null),$i(this,sR)&&(clearTimeout($i(this,sR)),ea(this,sR,null))),super.remove()}rebuild(){this.parent?(super.rebuild(),null!==this.div&&($i(this,tR)&&null===$i(this,aR)&&na(this,cR,hR).call(this),this.isAttachedToDOM||this.parent.add(this))):$i(this,tR)&&na(this,cR,hR).call(this)}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!($i(this,eR)||$i(this,$N)||$i(this,nR)||$i(this,lR)||$i(this,tR))}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this.width&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.div.setAttribute("role","figure"),this.addAltTextButton(),$i(this,$N)?na(this,cR,mR).call(this):na(this,cR,hR).call(this),this.width&&!this.annotationElementId){const[n,l]=this.parentDimensions;this.setAt(t*n,e*l,this.width*n,this.height*l)}return this._uiManager.addShouldRescale(this),this.div}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(null!==$i(this,sR)&&clearTimeout($i(this,sR)),ea(this,sR,setTimeout((()=>{ea(this,sR,null),na(this,cR,pR).call(this)}),200)))}copyCanvas(t,e,n=!1){var l;t||(t=224);const{width:i,height:a}=$i(this,$N),s=new ks;let r=$i(this,$N),o=i,c=a,d=null;if(e){if(i>e||a>e){const t=Math.min(e/i,e/a);o=Math.floor(i*t),c=Math.floor(a*t)}d=document.createElement("canvas");const t=d.width=Math.ceil(o*s.sx),n=d.height=Math.ceil(c*s.sy);$i(this,rR)||(r=na(this,cR,UR).call(this,t,n));const u=d.getContext("2d");u.filter=this._uiManager.hcmFilter;let h="white",m="#cfcfd8";"none"!==this._uiManager.hcmFilter?m="black":null!=(l=window.matchMedia)&&l.call(window,"(prefers-color-scheme: dark)").matches&&(h="#8f8f9d",m="#42414d");const U=15,p=U*s.sx,F=U*s.sy,b=new OffscreenCanvas(2*p,2*F),Z=b.getContext("2d");Z.fillStyle=h,Z.fillRect(0,0,2*p,2*F),Z.fillStyle=m,Z.fillRect(0,0,p,F),Z.fillRect(p,F,p,F),u.fillStyle=u.createPattern(b,"repeat"),u.fillRect(0,0,t,n),u.drawImage(r,0,0,r.width,r.height,0,0,t,n)}let u=null;if(n){let e,n;if(s.symmetric&&r.widtht||a>t){const l=Math.min(t/i,t/a);e=Math.floor(i*l),n=Math.floor(a*l),$i(this,rR)||(r=na(this,cR,UR).call(this,e,n))}const l=new OffscreenCanvas(e,n).getContext("2d",{willReadFrequently:!0});l.drawImage(r,0,0,r.width,r.height,0,0,e,n),u={width:e,height:n,data:l.getImageData(0,0,e,n).data}}return{canvas:d,width:o,height:c,imageData:u}}getImageForAltText(){return $i(this,aR)}static async deserialize(t,e,n){var l;let i=null;if(t instanceof WF){const{data:{rect:a,rotation:s,id:r,structParent:o,popupRef:c},container:d,parent:{page:{pageNumber:u}}}=t,h=d.querySelector("canvas"),m=n.imageManager.getFromCanvas(d.id,h);h.remove();const U=(null==(l=await e._structTree.getAriaAttributes(`${os}${r}`))?void 0:l.get("aria-label"))||"";i=t={annotationType:Fa.STAMP,bitmapId:m.id,bitmap:m.bitmap,pageIndex:u-1,rect:a.slice(0),rotation:s,id:r,deleted:!1,accessibilityData:{decorative:!1,altText:U},isSvg:!1,structParent:o,popupRef:c}}const a=await super.deserialize(t,e,n),{rect:s,bitmap:r,bitmapUrl:o,bitmapId:c,isSvg:d,accessibilityData:u}=t;c&&n.imageManager.isValidId(c)?(ea(a,tR,c),r&&ea(a,$N,r)):ea(a,nR,o),ea(a,rR,d);const[h,m]=a.pageDimensions;return a.width=(s[2]-s[0])/h,a.height=(s[3]-s[1])/m,a.annotationElementId=t.id||null,u&&(a.altTextData=u),a._initialData=i,ea(a,oR,!!i),a}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const n={annotationType:Fa.STAMP,bitmapId:$i(this,tR),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:$i(this,rR),structTreeParentId:this._structTreeParentId};if(t)return n.bitmapUrl=na(this,cR,FR).call(this,!0),n.accessibilityData=this.serializeAltText(!0),n;const{decorative:l,altText:i}=this.serializeAltText(!1);if(!l&&i&&(n.accessibilityData={type:"Figure",alt:i}),this.annotationElementId){const t=na(this,cR,bR).call(this,n);if(t.isSame)return null;t.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1}if(n.id=this.annotationElementId,null===e)return n;e.stamps||(e.stamps=new Map);const a=$i(this,rR)?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(e.stamps.has($i(this,tR))){if($i(this,rR)){const t=e.stamps.get($i(this,tR));a>t.area&&(t.area=a,t.serialized.bitmap.close(),t.serialized.bitmap=na(this,cR,FR).call(this,!1))}}else e.stamps.set($i(this,tR),{area:a,serialized:n}),n.bitmap=na(this,cR,FR).call(this,!1);return n}renderAnnotationElement(t){return t.updateEdited({rect:this.getRect(0,0)}),null}};$N=new WeakMap,tR=new WeakMap,eR=new WeakMap,nR=new WeakMap,lR=new WeakMap,iR=new WeakMap,aR=new WeakMap,sR=new WeakMap,rR=new WeakMap,oR=new WeakMap,cR=new WeakSet,dR=function(t,e=!1){t?(ea(this,$N,t.bitmap),e||(ea(this,tR,t.id),ea(this,rR,t.isSvg)),t.file&&ea(this,iR,t.file.name),na(this,cR,mR).call(this)):this.remove()},uR=function(){if(ea(this,eR,null),this._uiManager.enableWaiting(!1),$i(this,aR)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&$i(this,$N))return this._editToolbar.hide(),void this._uiManager.editAltText(this,!0);if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&$i(this,$N)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}},hR=function(){if($i(this,tR))return this._uiManager.enableWaiting(!0),void this._uiManager.imageManager.getFromId($i(this,tR)).then((t=>na(this,cR,dR).call(this,t,!0))).finally((()=>na(this,cR,uR).call(this)));if($i(this,nR)){const t=$i(this,nR);return ea(this,nR,null),this._uiManager.enableWaiting(!0),void ea(this,eR,this._uiManager.imageManager.getFromUrl(t).then((t=>na(this,cR,dR).call(this,t))).finally((()=>na(this,cR,uR).call(this))))}if($i(this,lR)){const t=$i(this,lR);return ea(this,lR,null),this._uiManager.enableWaiting(!0),void ea(this,eR,this._uiManager.imageManager.getFromFile(t).then((t=>na(this,cR,dR).call(this,t))).finally((()=>na(this,cR,uR).call(this))))}const t=document.createElement("input");t.type="file",t.accept=ZR.supportedTypesStr;const e=this._uiManager._signal;ea(this,eR,new Promise((n=>{t.addEventListener("change",(async()=>{if(t.files&&0!==t.files.length){this._uiManager.enableWaiting(!0);const e=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),na(this,cR,dR).call(this,e)}else this.remove();n()}),{signal:e}),t.addEventListener("cancel",(()=>{this.remove(),n()}),{signal:e})})).finally((()=>na(this,cR,uR).call(this)))),t.click()},mR=function(){var t;const{div:e}=this;let{width:n,height:l}=$i(this,$N);const[i,a]=this.pageDimensions,s=.75;if(this.width)n=this.width*i,l=this.height*a;else if(n>s*i||l>s*a){const t=Math.min(s*i/n,s*a/l);n*=t,l*=t}const[r,o]=this.parentDimensions;this.setDims(n*r/i,l*o/a),this._uiManager.enableWaiting(!1);const c=ea(this,aR,document.createElement("canvas"));c.setAttribute("role","img"),this.addContainer(c),this.width=n/i,this.height=l/a,null!=(t=this._initialOptions)&&t.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),na(this,cR,pR).call(this),$i(this,oR)||(this.parent.addUndoableEditor(this),ea(this,oR,!0)),this._reportTelemetry({action:"inserted_image"}),$i(this,iR)&&c.setAttribute("aria-label",$i(this,iR))},UR=function(t,e){const{width:n,height:l}=$i(this,$N);let i=n,a=l,s=$i(this,$N);for(;i>2*t||a>2*e;){const n=i,l=a;i>2*t&&(i=i>=16384?Math.floor(i/2)-1:Math.ceil(i/2)),a>2*e&&(a=a>=16384?Math.floor(a/2)-1:Math.ceil(a/2));const r=new OffscreenCanvas(i,a);r.getContext("2d").drawImage(s,0,0,n,l,0,0,i,a),s=r.transferToImageBitmap()}return s},pR=function(){const[t,e]=this.parentDimensions,{width:n,height:l}=this,i=new ks,a=Math.ceil(n*t*i.sx),s=Math.ceil(l*e*i.sy),r=$i(this,aR);if(!r||r.width===a&&r.height===s)return;r.width=a,r.height=s;const o=$i(this,rR)?$i(this,$N):na(this,cR,UR).call(this,a,s),c=r.getContext("2d");c.filter=this._uiManager.hcmFilter,c.drawImage(o,0,0,o.width,o.height,0,0,a,s)},FR=function(t){if(t){if($i(this,rR)){const t=this._uiManager.imageManager.getSvgUrl($i(this,tR));if(t)return t}const t=document.createElement("canvas");return({width:t.width,height:t.height}=$i(this,$N)),t.getContext("2d").drawImage($i(this,$N),0,0),t.toDataURL()}if($i(this,rR)){const[t,e]=this.pageDimensions,n=Math.round(this.width*t*hs.PDF_TO_CSS_UNITS),l=Math.round(this.height*e*hs.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,l);return i.getContext("2d").drawImage($i(this,$N),0,0,$i(this,$N).width,$i(this,$N).height,0,0,n,l),i.transferToImageBitmap()}return structuredClone($i(this,$N))},bR=function(t){var e;const{pageIndex:n,accessibilityData:{altText:l}}=this._initialData,i=t.pageIndex===n,a=((null==(e=t.accessibilityData)?void 0:e.alt)||"")===l;return{isSame:!this._hasBeenMoved&&!this._hasBeenResized&&i&&a,isSameAltText:a}},Hi(ZR,"_type","stamp"),Hi(ZR,"_editorType",Fa.STAMP);let NR=ZR;var RR,SR,WR,VR,QR,yR,TR,MR,gR,ER,GR,BR,JR,kR,YR,CR,XR,IR,DR,fR,LR,wR;let xR=(YR=class{constructor({uiManager:t,pageIndex:e,div:n,structTreeLayer:l,accessibilityManager:i,annotationLayer:a,drawLayer:s,textLayer:r,viewport:o,l10n:c}){ta(this,XR),ta(this,RR),ta(this,SR,!1),ta(this,WR,null),ta(this,VR,null),ta(this,QR,null),ta(this,yR,new Map),ta(this,TR,!1),ta(this,MR,!1),ta(this,gR,!1),ta(this,ER,null),ta(this,GR,null),ta(this,BR,null),ta(this,JR,null),ta(this,kR);const d=[...$i(YR,CR).values()];if(!YR._initialized){YR._initialized=!0;for(const e of d)e.initialize(c,t)}t.registerEditorTypes(d),ea(this,kR,t),this.pageIndex=e,this.div=n,ea(this,RR,i),ea(this,WR,a),this.viewport=o,ea(this,BR,r),this.drawLayer=s,this._structTree=l,$i(this,kR).addLayer(this)}get isEmpty(){return 0===$i(this,yR).size}get isInvisible(){return this.isEmpty&&$i(this,kR).getMode()===Fa.NONE}updateToolbar(t){$i(this,kR).updateToolbar(t)}updateMode(t=$i(this,kR).getMode()){switch(na(this,XR,wR).call(this),t){case Fa.NONE:return this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),void this.disableClick();case Fa.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case Fa.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;for(const n of $i(YR,CR).values())e.toggle(`${n._type}Editing`,t===n._editorType);this.div.hidden=!1}hasTextLayer(t){var e;return t===(null==(e=$i(this,BR))?void 0:e.div)}setEditingState(t){$i(this,kR).setEditingState(t)}addCommands(t){$i(this,kR).addCommands(t)}cleanUndoStack(t){$i(this,kR).cleanUndoStack(t)}toggleDrawing(t=!1){this.div.classList.toggle("drawing",!t)}togglePointerEvents(t=!1){this.div.classList.toggle("disabled",!t)}toggleAnnotationLayerPointerEvents(t=!1){var e;null==(e=$i(this,WR))||e.div.classList.toggle("disabled",!t)}async enable(){ea(this,gR,!0),this.div.tabIndex=0,this.togglePointerEvents(!0);const t=new Set;for(const n of $i(this,yR).values())n.enableEditing(),n.show(!0),n.annotationElementId&&($i(this,kR).removeChangedExistingAnnotation(n),t.add(n.annotationElementId));if(!$i(this,WR))return void ea(this,gR,!1);const e=$i(this,WR).getEditableAnnotations();for(const n of e){if(n.hide(),$i(this,kR).isDeletedAnnotationElement(n.data.id)||t.has(n.data.id))continue;const e=await this.deserialize(n);e&&(this.addOrRebuild(e),e.enableEditing())}ea(this,gR,!1)}disable(){var t;ea(this,MR,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const e=new Map,n=new Map;for(const i of $i(this,yR).values())if(i.disableEditing(),i.annotationElementId){if(null!==i.serialize()){e.set(i.annotationElementId,i);continue}n.set(i.annotationElementId,i),null==(t=this.getEditableAnnotation(i.annotationElementId))||t.show(),i.remove()}if($i(this,WR)){const t=$i(this,WR).getEditableAnnotations();for(const l of t){const{id:t}=l.data;if($i(this,kR).isDeletedAnnotationElement(t))continue;let i=n.get(t);i?(i.resetAnnotationElement(l),i.show(!1),l.show()):(i=e.get(t),i&&($i(this,kR).addChangedExistingAnnotation(i),i.renderAnnotationElement(l)&&i.show(!1)),l.show())}}na(this,XR,wR).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:l}=this.div;for(const i of $i(YR,CR).values())l.remove(`${i._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),ea(this,MR,!1)}getEditableAnnotation(t){var e;return(null==(e=$i(this,WR))?void 0:e.getEditableAnnotation(t))||null}setActiveEditor(t){$i(this,kR).getActive()!==t&&$i(this,kR).setActiveEditor(t)}enableTextSelection(){var t;if(this.div.tabIndex=-1,null!=(t=$i(this,BR))&&t.div&&!$i(this,JR)){ea(this,JR,new AbortController);const t=$i(this,kR).combinedSignal($i(this,JR));$i(this,BR).div.addEventListener("pointerdown",na(this,XR,IR).bind(this),{signal:t}),$i(this,BR).div.classList.add("highlighting")}}disableTextSelection(){var t;this.div.tabIndex=0,null!=(t=$i(this,BR))&&t.div&&$i(this,JR)&&($i(this,JR).abort(),ea(this,JR,null),$i(this,BR).div.classList.remove("highlighting"))}enableClick(){if($i(this,VR))return;ea(this,VR,new AbortController);const t=$i(this,kR).combinedSignal($i(this,VR));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:t});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:t}),this.div.addEventListener("pointercancel",e,{signal:t})}disableClick(){var t;null==(t=$i(this,VR))||t.abort(),ea(this,VR,null)}attach(t){$i(this,yR).set(t.id,t);const{annotationElementId:e}=t;e&&$i(this,kR).isDeletedAnnotationElement(e)&&$i(this,kR).removeDeletedAnnotationElement(t)}detach(t){var e;$i(this,yR).delete(t.id),null==(e=$i(this,RR))||e.removePointerInTextLayer(t.contentDiv),!$i(this,MR)&&t.annotationElementId&&$i(this,kR).addDeletedAnnotationElement(t)}remove(t){this.detach(t),$i(this,kR).removeEditor(t),t.div.remove(),t.isAttachedToDOM=!1}changeParent(t){var e;t.parent!==this&&(t.parent&&t.annotationElementId&&($i(this,kR).addDeletedAnnotationElement(t.annotationElementId),dd.deleteAnnotationElement(t),t.annotationElementId=null),this.attach(t),null==(e=t.parent)||e.detach(t),t.setParent(this),t.div&&t.isAttachedToDOM&&(t.div.remove(),this.div.append(t.div)))}add(t){if(t.parent!==this||!t.isAttachedToDOM){if(this.changeParent(t),$i(this,kR).addEditor(t),this.attach(t),!t.isAttachedToDOM){const e=t.render();this.div.append(e),t.isAttachedToDOM=!0}t.fixAndSetPosition(),t.onceAdded(!$i(this,gR)),$i(this,kR).addToAnnotationStorage(t),t._reportTelemetry(t.telemetryInitialData)}}moveEditorInDOM(t){var e;if(!t.isAttachedToDOM)return;const{activeElement:n}=document;t.div.contains(n)&&!$i(this,QR)&&(t._focusEventsAllowed=!1,ea(this,QR,setTimeout((()=>{ea(this,QR,null),t.div.contains(document.activeElement)?t._focusEventsAllowed=!0:(t.div.addEventListener("focusin",(()=>{t._focusEventsAllowed=!0}),{once:!0,signal:$i(this,kR)._signal}),n.focus())}),0))),t._structTreeParentId=null==(e=$i(this,RR))?void 0:e.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?(t.parent||(t.parent=this),t.rebuild(),t.show()):this.add(t)}addUndoableEditor(t){const e=()=>t._uiManager.rebuild(t),n=()=>{t.remove()};this.addCommands({cmd:e,undo:n,mustExec:!1})}getNextId(){return $i(this,kR).getId()}combinedSignal(t){return $i(this,kR).combinedSignal(t)}canCreateNewEmptyEditor(){var t;return null==(t=$i(this,XR,DR))?void 0:t.canCreateNewEmptyEditor()}pasteEditor(t,e){$i(this,kR).updateToolbar(t),$i(this,kR).updateMode(t);const{offsetX:n,offsetY:l}=na(this,XR,LR).call(this),i=this.getNextId(),a=na(this,XR,fR).call(this,{parent:this,id:i,x:n,y:l,uiManager:$i(this,kR),isCentered:!0,...e});a&&this.add(a)}async deserialize(t){var e;return await(null==(e=$i(YR,CR).get(t.annotationType??t.annotationEditorType))?void 0:e.deserialize(t,this,$i(this,kR)))||null}createAndAddNewEditor(t,e,n={}){const l=this.getNextId(),i=na(this,XR,fR).call(this,{parent:this,id:l,x:t.offsetX,y:t.offsetY,uiManager:$i(this,kR),isCentered:e,...n});return i&&this.add(i),i}addNewEditor(){this.createAndAddNewEditor(na(this,XR,LR).call(this),!0)}setSelected(t){$i(this,kR).setSelected(t)}toggleSelected(t){$i(this,kR).toggleSelected(t)}unselect(t){$i(this,kR).unselect(t)}pointerup(t){var e;const{isMac:n}=Aa.platform;if(!(0!==t.button||t.ctrlKey&&n)&&t.target===this.div&&$i(this,TR)&&(ea(this,TR,!1),null==(e=$i(this,XR,DR))||!e.isDrawer||!$i(this,XR,DR).supportMultipleDrawings)){if(!$i(this,SR))return void ea(this,SR,!0);if($i(this,kR).getMode()===Fa.STAMP)return void $i(this,kR).unselectAll();this.createAndAddNewEditor(t,!1)}}pointerdown(t){var e;if($i(this,kR).getMode()===Fa.HIGHLIGHT&&this.enableTextSelection(),$i(this,TR))return void ea(this,TR,!1);const{isMac:n}=Aa.platform;if(0!==t.button||t.ctrlKey&&n||t.target!==this.div)return;if(ea(this,TR,!0),null!=(e=$i(this,XR,DR))&&e.isDrawer)return void this.startDrawingSession(t);const l=$i(this,kR).getActive();ea(this,SR,!l||l.isEmpty())}startDrawingSession(t){if(this.div.focus(),$i(this,ER))return void $i(this,XR,DR).startDrawing(this,$i(this,kR),!1,t);$i(this,kR).setCurrentDrawingSession(this),ea(this,ER,new AbortController);const e=$i(this,kR).combinedSignal($i(this,ER));this.div.addEventListener("blur",(({relatedTarget:t})=>{t&&!this.div.contains(t)&&(ea(this,GR,null),this.commitOrRemove())}),{signal:e}),$i(this,XR,DR).startDrawing(this,$i(this,kR),!1,t)}pause(t){if(t){const{activeElement:t}=document;this.div.contains(t)&&ea(this,GR,t)}else $i(this,GR)&&setTimeout((()=>{var t;null==(t=$i(this,GR))||t.focus(),ea(this,GR,null)}),0)}endDrawingSession(t=!1){return $i(this,ER)?($i(this,kR).setCurrentDrawingSession(null),$i(this,ER).abort(),ea(this,ER,null),ea(this,GR,null),$i(this,XR,DR).endDrawing(t)):null}findNewParent(t,e,n){const l=$i(this,kR).findParent(e,n);return null!==l&&l!==this&&(l.changeParent(t),!0)}commitOrRemove(){return!!$i(this,ER)&&(this.endDrawingSession(),!0)}onScaleChanging(){$i(this,ER)&&$i(this,XR,DR).onScaleChangingWhenDrawing(this)}destroy(){var t,e;this.commitOrRemove(),(null==(t=$i(this,kR).getActive())?void 0:t.parent)===this&&($i(this,kR).commitOrRemove(),$i(this,kR).setActiveEditor(null)),$i(this,QR)&&(clearTimeout($i(this,QR)),ea(this,QR,null));for(const n of $i(this,yR).values())null==(e=$i(this,RR))||e.removePointerInTextLayer(n.contentDiv),n.setParent(null),n.isAttachedToDOM=!1,n.div.remove();this.div=null,$i(this,yR).clear(),$i(this,kR).removeLayer(this)}render({viewport:t}){this.viewport=t,Js(this.div,t);for(const e of $i(this,kR).getEditors(this.pageIndex))this.add(e),e.rebuild();this.updateMode()}update({viewport:t}){$i(this,kR).commitOrRemove(),na(this,XR,wR).call(this);const e=this.viewport.rotation,n=t.rotation;if(this.viewport=t,Js(this.div,{rotation:n}),e!==n)for(const l of $i(this,yR).values())l.rotate(n)}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}get scale(){return $i(this,kR).viewParameters.realScale}},RR=new WeakMap,SR=new WeakMap,WR=new WeakMap,VR=new WeakMap,QR=new WeakMap,yR=new WeakMap,TR=new WeakMap,MR=new WeakMap,gR=new WeakMap,ER=new WeakMap,GR=new WeakMap,BR=new WeakMap,JR=new WeakMap,kR=new WeakMap,CR=new WeakMap,XR=new WeakSet,IR=function(t){$i(this,kR).unselectAll();const{target:e}=t;if(e===$i(this,BR).div||("img"===e.getAttribute("role")||e.classList.contains("endOfContent"))&&$i(this,BR).div.contains(e)){const{isMac:e}=Aa.platform;if(0!==t.button||t.ctrlKey&&e)return;$i(this,kR).showAllEditors("highlight",!0,!0),$i(this,BR).div.classList.add("free"),this.toggleDrawing(),jZ.startHighlighting(this,"ltr"===$i(this,kR).direction,{target:$i(this,BR).div,x:t.x,y:t.y}),$i(this,BR).div.addEventListener("pointerup",(()=>{$i(this,BR).div.classList.remove("free"),this.toggleDrawing(!0)}),{once:!0,signal:$i(this,kR)._signal}),t.preventDefault()}},DR=function(){return $i(YR,CR).get($i(this,kR).getMode())},fR=function(t){const e=$i(this,XR,DR);return e?new e.prototype.constructor(t):null},LR=function(){const{x:t,y:e,width:n,height:l}=this.div.getBoundingClientRect(),i=Math.max(0,t),a=Math.max(0,e),s=Math.min(window.innerWidth,t+n),r=Math.min(window.innerHeight,e+l),o=(i+s)/2-t,c=(a+r)/2-e,[d,u]=this.viewport.rotation%180===0?[o,c]:[c,o];return{offsetX:d,offsetY:u}},wR=function(){for(const t of $i(this,yR).values())t.isEmpty()&&t.remove()},Hi(YR,"_initialized",!1),ta(YR,CR,new Map([zF,qN,NR,jZ].map((t=>[t._editorType,t])))),YR);var zR,vR,OR,_R,jR,KR,PR,AR,HR,qR,$R;let tS=(KR=class{constructor({pageIndex:t}){ta(this,AR),ta(this,zR,null),ta(this,vR,0),ta(this,OR,new Map),ta(this,_R,new Map),this.pageIndex=t}setParent(t){if($i(this,zR)){if($i(this,zR)!==t){if($i(this,OR).size>0)for(const e of $i(this,OR).values())e.remove(),t.append(e);ea(this,zR,t)}}else ea(this,zR,t)}static get _svgFactory(){return Ca(this,"_svgFactory",new wU)}draw(t,e=!1,n=!1){const l=la(this,vR)._++,i=na(this,AR,HR).call(this),a=KR._svgFactory.createElement("defs");i.append(a);const s=KR._svgFactory.createElement("path");a.append(s);const r=`path_p${this.pageIndex}_${l}`;s.setAttribute("id",r),s.setAttribute("vector-effect","non-scaling-stroke"),e&&$i(this,_R).set(l,s);const o=n?na(this,AR,qR).call(this,a,r):null,c=KR._svgFactory.createElement("use");return i.append(c),c.setAttribute("href",`#${r}`),this.updateProperties(i,t),$i(this,OR).set(l,i),{id:l,clipPathId:`url(#${o})`}}drawOutline(t,e){const n=la(this,vR)._++,l=na(this,AR,HR).call(this),i=KR._svgFactory.createElement("defs");l.append(i);const a=KR._svgFactory.createElement("path");i.append(a);const s=`path_p${this.pageIndex}_${n}`;let r;if(a.setAttribute("id",s),a.setAttribute("vector-effect","non-scaling-stroke"),e){const t=KR._svgFactory.createElement("mask");i.append(t),r=`mask_p${this.pageIndex}_${n}`,t.setAttribute("id",r),t.setAttribute("maskUnits","objectBoundingBox");const e=KR._svgFactory.createElement("rect");t.append(e),e.setAttribute("width","1"),e.setAttribute("height","1"),e.setAttribute("fill","white");const l=KR._svgFactory.createElement("use");t.append(l),l.setAttribute("href",`#${s}`),l.setAttribute("stroke","none"),l.setAttribute("fill","black"),l.setAttribute("fill-rule","nonzero"),l.classList.add("mask")}const o=KR._svgFactory.createElement("use");l.append(o),o.setAttribute("href",`#${s}`),r&&o.setAttribute("mask",`url(#${r})`);const c=o.cloneNode();return l.append(c),o.classList.add("mainOutline"),c.classList.add("secondaryOutline"),this.updateProperties(l,t),$i(this,OR).set(n,l),n}finalizeDraw(t,e){$i(this,_R).delete(t),this.updateProperties(t,e)}updateProperties(t,e){var n;if(!e)return;const{root:l,bbox:i,rootClass:a,path:s}=e,r="number"==typeof t?$i(this,OR).get(t):t;if(r){if(l&&na(this,AR,$R).call(this,r,l),i&&na(n=KR,jR,PR).call(n,r,i),a){const{classList:t}=r;for(const[e,n]of Object.entries(a))t.toggle(e,n)}if(s){const t=r.firstChild.firstChild;na(this,AR,$R).call(this,t,s)}}}updateParent(t,e){if(e===this)return;const n=$i(this,OR).get(t);n&&($i(e,zR).append(n),$i(this,OR).delete(t),$i(e,OR).set(t,n))}remove(t){$i(this,_R).delete(t),null!==$i(this,zR)&&($i(this,OR).get(t).remove(),$i(this,OR).delete(t))}destroy(){ea(this,zR,null);for(const t of $i(this,OR).values())t.remove();$i(this,OR).clear(),$i(this,_R).clear()}},zR=new WeakMap,vR=new WeakMap,OR=new WeakMap,_R=new WeakMap,jR=new WeakSet,PR=function(t,[e,n,l,i]){const{style:a}=t;a.top=100*n+"%",a.left=100*e+"%",a.width=100*l+"%",a.height=100*i+"%"},AR=new WeakSet,HR=function(){const t=KR._svgFactory.create(1,1,!0);return $i(this,zR).append(t),t.setAttribute("aria-hidden",!0),t},qR=function(t,e){const n=KR._svgFactory.createElement("clipPath");t.append(n);const l=`clip_${e}`;n.setAttribute("id",l),n.setAttribute("clipPathUnits","objectBoundingBox");const i=KR._svgFactory.createElement("use");return n.append(i),i.setAttribute("href",`#${e}`),i.classList.add("clip"),l},$R=function(t,e){for(const[n,l]of Object.entries(e))null===l?t.removeAttribute(n):t.setAttribute(n,l)},ta(KR,jR),KR);globalThis.pdfjsTestingUtils={HighlightOutliner:aZ},ra.AbortException,ra.AnnotationEditorLayer,ra.AnnotationEditorParamsType,ra.AnnotationEditorType,ra.AnnotationEditorUIManager;var eS=ra.AnnotationLayer;ra.AnnotationMode,ra.ColorPicker,ra.DOMSVGFactory,ra.DrawLayer,ra.FeatureTest;var nS=ra.GlobalWorkerOptions;ra.ImageKind,ra.InvalidPDFException,ra.MissingPDFException,ra.OPS,ra.OutputScale,ra.PDFDataRangeTransport,ra.PDFDateString,ra.PDFWorker;var lS=ra.PasswordResponses;ra.PermissionFlag,ra.PixelsPerInch,ra.RenderingCancelledException;var iS=ra.TextLayer;ra.TouchManager,ra.UnexpectedResponseException,ra.Util,ra.VerbosityLevel,ra.XfaLayer,ra.build,ra.createValidAbsoluteUrl,ra.fetchData;var aS=ra.getDocument;ra.getFilenameFromUrl,ra.getPdfFilenameFromUrl,ra.getXfaPageViewport,ra.isDataScheme,ra.isPdfFile,ra.noContextMenu,ra.normalizeUnicode,ra.setLayerDimensions,ra.shadow,ra.stopEvent,ra.version;const sS="data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNjcwNikscz1pKDIxOTUpLG49YS5BcnJheUJ1ZmZlcixvPWEuVHlwZUVycm9yO2UuZXhwb3J0cz1uJiZyKG4ucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1zKGUpKXRocm93IG5ldyBvKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3NDc2KSxzPWkoNzM5NCksbj1hLkFycmF5QnVmZmVyLG89biYmbi5wcm90b3R5cGUsZz1vJiZyKG8uc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09cyhlKSlyZXR1cm4hMTtpZighZylyZXR1cm4hMTt0cnl7ZyhlLDAsMCk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OTooZSx0LGkpPT57dmFyIGE9aSgzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDUxNjkpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksbD1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsQz1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPU1hdGgubWluLHU9Qy5wcm90b3R5cGUsZD1RLnByb3RvdHlwZSxmPXIodS5zbGljZSkscD1zKHUsInJlc2l6YWJsZSIsImdldCIpLG09cyh1LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IikseT1yKGQuZ2V0SW50OCksdz1yKGQuc2V0SW50OCk7ZS5leHBvcnRzPShsfHxjKSYmZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI9ZyhlKSxzPXZvaWQgMD09PXQ/cjpuKHQpLHU9IXB8fCFwKGUpO28oZSk7aWYobCl7ZT1oKGUse3RyYW5zZmVyOltlXX0pO2lmKHI9PT1zJiYoaXx8dSkpcmV0dXJuIGV9aWYocj49cyYmKCFpfHx1KSlhPWYoZSwwLHMpO2Vsc2V7dmFyIGQ9aSYmIXUmJm0/e21heEJ5dGVMZW5ndGg6bShlKX06dm9pZCAwO2E9bmV3IEMocyxkKTtmb3IodmFyIGI9bmV3IFEoZSksRD1uZXcgUShhKSxTPUUocyxyKSxrPTA7azxTO2srKyl3KEQsayx5KGIsaykpfWx8fGMoZSk7cmV0dXJuIGF9fSw0NjQ0OihlLHQsaSk9Pnt2YXIgYSxyLHMsbj1pKDc4MTEpLG89aSgzNzI0KSxnPWkoNDU3NiksYz1pKDQ5MDEpLGw9aSgzNCksaD1pKDkyOTcpLEM9aSg2OTU1KSxRPWkoNjgyMyksRT1pKDY2OTkpLHU9aSg2ODQwKSxkPWkoMjEwNiksZj1pKDE2MjUpLHA9aSgyNzg3KSxtPWkoMjk2NykseT1pKDgyMjcpLHc9aSgzMzkyKSxiPWkoMTE4MSksRD1iLmVuZm9yY2UsUz1iLmdldCxrPWcuSW50OEFycmF5LFI9ayYmay5wcm90b3R5cGUsTj1nLlVpbnQ4Q2xhbXBlZEFycmF5LEc9TiYmTi5wcm90b3R5cGUsTT1rJiZwKGspLFU9UiYmcChSKSx4PU9iamVjdC5wcm90b3R5cGUsTD1nLlR5cGVFcnJvcixIPXkoInRvU3RyaW5nVGFnIiksSj13KCJUWVBFRF9BUlJBWV9UQUciKSx2PSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFk9biYmISFtJiYiT3BlcmEiIT09QyhnLm9wZXJhKSxLPSExLFQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxxPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7aWYobCh0KSl7dmFyIGk9Uyh0KTtyZXR1cm4gaSYmaChpLHYpP2lbdl06Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKHQpfX0saXNUeXBlZEFycmF5PWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIGgoVCx0KXx8aChxLHQpfTtmb3IoYSBpbiBUKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSk/RChzKVt2XT1yOlk9ITE7Zm9yKGEgaW4gcSkocz0ocj1nW2FdKSYmci5wcm90b3R5cGUpJiYoRChzKVt2XT1yKTtpZighWXx8IWMoTSl8fE09PT1GdW5jdGlvbi5wcm90b3R5cGUpe009ZnVuY3Rpb24gVHlwZWRBcnJheSgpe3Rocm93IG5ldyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihZKWZvcihhIGluIFQpZ1thXSYmbShnW2FdLE0pfWlmKCFZfHwhVXx8VT09PXgpe1U9TS5wcm90b3R5cGU7aWYoWSlmb3IoYSBpbiBUKWdbYV0mJm0oZ1thXS5wcm90b3R5cGUsVSl9WSYmcChHKSE9PVUmJm0oRyxVKTtpZihvJiYhaChVLEgpKXtLPSEwO2QoVSxILHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tKXTp2b2lkIDB9fSk7Zm9yKGEgaW4gVClnW2FdJiZFKGdbYV0sSixhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6WSxUWVBFRF9BUlJBWV9UQUc6SyYmSixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEwoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGMoZSkmJighbXx8ZihNLGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTChRKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsaSxhKXtpZihvKXtpZihpKWZvcih2YXIgciBpbiBUKXt2YXIgcz1nW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChpKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1VW2VdJiYhaXx8dShVLGUsaT90OlkmJlJbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxyO2lmKG8pe2lmKG0pe2lmKGkpZm9yKGEgaW4gVClpZigocj1nW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoTVtlXSYmIWkpcmV0dXJuO3RyeXtyZXR1cm4gdShNLGUsaT90OlkmJk1bZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gVCkhKHI9Z1thXSl8fHJbZV0mJiFpfHx1KHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoVCx0KXx8aChxLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTpNLFR5cGVkQXJyYXlQcm90b3R5cGU6VX19LDUzNzA6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9pOmEodCksbj1uZXcgZShzKTtzPnI7KW5bcl09dFtyKytdO3JldHVybiBufX0sOTYxNzooZSx0LGkpPT57dmFyIGE9aSg1Mzk3KSxyPWkoNTYxMCkscz1pKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxpLG4pe3ZhciBvPWEodCksZz1zKG8pO2lmKDA9PT1nKXJldHVybiFlJiYtMTt2YXIgYyxsPXIobixnKTtpZihlJiZpIT1pKXtmb3IoO2c+bDspaWYoKGM9b1tsKytdKSE9YylyZXR1cm4hMH1lbHNlIGZvcig7Zz5sO2wrKylpZigoZXx8bCBpbiBvKSYmb1tsXT09PWkpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQzNzYpLHM9VHlwZUVycm9yLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhbihlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzY4MDooZSx0LGkpPT57dmFyIGE9aSg5NTA0KTtlLmV4cG9ydHM9YShbXS5zbGljZSl9LDc2Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPWEoZSkscj1uZXcgdChpKSxzPTA7czxpO3MrKylyW3NdPWVbaS1zLTFdO3JldHVybiByfX0sOTkyODooZSx0LGkpPT57dmFyIGE9aSg2MTk4KSxyPWkoMTI5MSkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxuKXt2YXIgbz1hKGUpLGc9cihpKSxjPWc8MD9vK2c6ZztpZihjPj1vfHxjPDApdGhyb3cgbmV3IHMoIkluY29ycmVjdCBpbmRleCIpO2Zvcih2YXIgbD1uZXcgdChvKSxoPTA7aDxvO2grKylsW2hdPWg9PT1jP246ZVtoXTtyZXR1cm4gbH19LDYzMTk6KGUsdCxpKT0+e3ZhciBhPWkoODU1MSkscj1pKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxzKXt0cnl7cmV0dXJuIHM/dChhKGkpWzBdLGlbMV0pOnQoaSl9Y2F0Y2godCl7cihlLCJ0aHJvdyIsdCl9fX0sMjE5NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWEoe30udG9TdHJpbmcpLHM9YSgiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzKHIoZSksOCwtMSl9fSw2OTU1OihlLHQsaSk9Pnt2YXIgYT1pKDIxNDApLHI9aSg0OTAxKSxzPWkoMjE5NSksbj1pKDgyMjcpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGc9IkFyZ3VtZW50cyI9PT1zKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPWE/czpmdW5jdGlvbihlKXt2YXIgdCxpLGE7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PW8oZSksbikpP2k6Zz9zKHQpOiJPYmplY3QiPT09KGE9cyh0KSkmJnIodC5jYWxsZWUpPyJBcmd1bWVudHMiOmF9fSw3NzQwOihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg1MDMxKSxzPWkoNzM0Nyksbj1pKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciBvPXIodCksZz1uLmYsYz1zLmYsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgaD1vW2xdO2EoZSxoKXx8aSYmYShpLGgpfHxnKGUsaCxjKHQsaCkpfX19LDIyMTE6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbDtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKSE9PUYucHJvdG90eXBlfSkpfSwyNTI5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sNjY5OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUsdCxpKXtyZXR1cm4gci5mKGUsdCxzKDEsaSkpfTpmdW5jdGlvbihlLHQsaSl7ZVt0XT1pO3JldHVybiBlfX0sNjk4MDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNDY1OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7YT9yLmYoZSx0LHMoMCxpKSk6ZVt0XT1pfX0sMjEwNjooZSx0LGkpPT57dmFyIGE9aSgyODMpLHI9aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2kuZ2V0JiZhKGkuZ2V0LHQse2dldHRlcjohMH0pO2kuc2V0JiZhKGkuc2V0LHQse3NldHRlcjohMH0pO3JldHVybiByLmYoZSx0LGkpfX0sNjg0MDooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNDkxMykscz1pKDI4Myksbj1pKDk0MzMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtvfHwobz17fSk7dmFyIGc9by5lbnVtZXJhYmxlLGM9dm9pZCAwIT09by5uYW1lP28ubmFtZTp0O2EoaSkmJnMoaSxjLG8pO2lmKG8uZ2xvYmFsKWc/ZVt0XT1pOm4odCxpKTtlbHNle3RyeXtvLnVuc2FmZT9lW3RdJiYoZz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWc/ZVt0XT1pOnIuZihlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSw2Mjc5OihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciByIGluIHQpYShlLHIsdFtyXSxpKTtyZXR1cm4gZX19LDk0MzM6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e3IoYSxlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGkpe2FbZV09dH1yZXR1cm4gdH19LDM3MjQ6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSw0NDgzOihlLHQsaSk9Pnt2YXIgYSxyLHMsbixvPWkoNDU3NiksZz1pKDk0MjkpLGM9aSgxNTQ4KSxsPW8uc3RydWN0dXJlZENsb25lLGg9by5BcnJheUJ1ZmZlcixDPW8uTWVzc2FnZUNoYW5uZWwsUT0hMTtpZihjKVE9ZnVuY3Rpb24oZSl7bChlLHt0cmFuc2ZlcjpbZV19KX07ZWxzZSBpZihoKXRyeXtDfHwoYT1nKCJ3b3JrZXJfdGhyZWFkcyIpKSYmKEM9YS5NZXNzYWdlQ2hhbm5lbCk7aWYoQyl7cj1uZXcgQztzPW5ldyBoKDIpO249ZnVuY3Rpb24oZSl7ci5wb3J0MS5wb3N0TWVzc2FnZShudWxsLFtlXSl9O2lmKDI9PT1zLmJ5dGVMZW5ndGgpe24ocyk7MD09PXMuYnl0ZUxlbmd0aCYmKFE9bil9fX1jYXRjaChlKXt9ZS5leHBvcnRzPVF9LDQwNTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDM0KSxzPWEuZG9jdW1lbnQsbj1yKHMpJiZyKHMuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuP3MuY3JlYXRlRWxlbWVudChlKTp7fX19LDY4Mzc6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IHQoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBlfX0sNTAwMjplPT57ZS5leHBvcnRzPXtJbmRleFNpemVFcnJvcjp7czoiSU5ERVhfU0laRV9FUlIiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czoiRE9NU1RSSU5HX1NJWkVfRVJSIixjOjIsbTowfSxIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6e3M6IkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsYzozLG06MX0sV3JvbmdEb2N1bWVudEVycm9yOntzOiJXUk9OR19ET0NVTUVOVF9FUlIiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czoiSU5WQUxJRF9DSEFSQUNURVJfRVJSIixjOjUsbToxfSxOb0RhdGFBbGxvd2VkRXJyb3I6e3M6Ik5PX0RBVEFfQUxMT1dFRF9FUlIiLGM6NixtOjB9LE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOntzOiJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6Ik5PVF9GT1VORF9FUlIiLGM6OCxtOjF9LE5vdFN1cHBvcnRlZEVycm9yOntzOiJOT1RfU1VQUE9SVEVEX0VSUiIsYzo5LG06MX0sSW5Vc2VBdHRyaWJ1dGVFcnJvcjp7czoiSU5VU0VfQVRUUklCVVRFX0VSUiIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOiJJTlZBTElEX1NUQVRFX0VSUiIsYzoxMSxtOjF9LFN5bnRheEVycm9yOntzOiJTWU5UQVhfRVJSIixjOjEyLG06MX0sSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOntzOiJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czoiTkFNRVNQQUNFX0VSUiIsYzoxNCxtOjF9LEludmFsaWRBY2Nlc3NFcnJvcjp7czoiSU5WQUxJRF9BQ0NFU1NfRVJSIixjOjE1LG06MX0sVmFsaWRhdGlvbkVycm9yOntzOiJWQUxJREFUSU9OX0VSUiIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOiJUWVBFX01JU01BVENIX0VSUiIsYzoxNyxtOjF9LFNlY3VyaXR5RXJyb3I6e3M6IlNFQ1VSSVRZX0VSUiIsYzoxOCxtOjF9LE5ldHdvcmtFcnJvcjp7czoiTkVUV09SS19FUlIiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOiJBQk9SVF9FUlIiLGM6MjAsbToxfSxVUkxNaXNtYXRjaEVycm9yOntzOiJVUkxfTUlTTUFUQ0hfRVJSIixjOjIxLG06MX0sUXVvdGFFeGNlZWRlZEVycm9yOntzOiJRVU9UQV9FWENFRURFRF9FUlIiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6IlRJTUVPVVRfRVJSIixjOjIzLG06MX0sSW52YWxpZE5vZGVUeXBlRXJyb3I6e3M6IklOVkFMSURfTk9ERV9UWVBFX0VSUiIsYzoyNCxtOjF9LERhdGFDbG9uZUVycm9yOntzOiJEQVRBX0NMT05FX0VSUiIsYzoyNSxtOjF9fX0sODcyNzplPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDYxOTM6KGUsdCxpKT0+e3ZhciBhPWkoNDIxNSk7ZS5leHBvcnRzPSJOT0RFIj09PWF9LDI4Mzk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3NikubmF2aWdhdG9yLHI9YSYmYS51c2VyQWdlbnQ7ZS5leHBvcnRzPXI/U3RyaW5nKHIpOiIifSw5NTE5OihlLHQsaSk9Pnt2YXIgYSxyLHM9aSg0NTc2KSxuPWkoMjgzOSksbz1zLnByb2Nlc3MsZz1zLkRlbm8sYz1vJiZvLnZlcnNpb25zfHxnJiZnLnZlcnNpb24sbD1jJiZjLnY4O2wmJihyPShhPWwuc3BsaXQoIi4iKSlbMF0+MCYmYVswXTw0PzE6KyhhWzBdK2FbMV0pKTshciYmbiYmKCEoYT1uLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8YVsxXT49NzQpJiYoYT1uLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0rYVsxXSk7ZS5leHBvcnRzPXJ9LDQyMTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDI4MzkpLHM9aSgyMTk1KSx1c2VyQWdlbnRTdGFydHNXaXRoPWZ1bmN0aW9uKGUpe3JldHVybiByLnNsaWNlKDAsZS5sZW5ndGgpPT09ZX07ZS5leHBvcnRzPXVzZXJBZ2VudFN0YXJ0c1dpdGgoIkJ1bi8iKT8iQlVOIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJDbG91ZGZsYXJlLVdvcmtlcnMiKT8iQ0xPVURGTEFSRSI6dXNlckFnZW50U3RhcnRzV2l0aCgiRGVuby8iKT8iREVOTyI6dXNlckFnZW50U3RhcnRzV2l0aCgiTm9kZS5qcy8iKT8iTk9ERSI6YS5CdW4mJiJzdHJpbmciPT10eXBlb2YgQnVuLnZlcnNpb24/IkJVTiI6YS5EZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbj8iREVOTyI6InByb2Nlc3MiPT09cyhhLnByb2Nlc3MpPyJOT0RFIjphLndpbmRvdyYmYS5kb2N1bWVudD8iQlJPV1NFUiI6IlJFU1QifSw4NTc0OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9RXJyb3Iscz1hKCIiLnJlcGxhY2UpLG49U3RyaW5nKG5ldyByKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGc9by50ZXN0KG4pO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGcmJiJzdHJpbmciPT10eXBlb2YgZSYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9cyhlLG8sIiIpO3JldHVybiBlfX0sNjUxODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNzM0NykuZixzPWkoNjY5OSksbj1pKDY4NDApLG89aSg5NDMzKSxnPWkoNzc0MCksYz1pKDI3OTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpLGwsaCxDLFEsRT1lLnRhcmdldCx1PWUuZ2xvYmFsLGQ9ZS5zdGF0O2lmKGk9dT9hOmQ/YVtFXXx8byhFLHt9KTphW0VdJiZhW0VdLnByb3RvdHlwZSlmb3IobCBpbiB0KXtDPXRbbF07aD1lLmRvbnRDYWxsR2V0U2V0PyhRPXIoaSxsKSkmJlEudmFsdWU6aVtsXTtpZighYyh1P2w6RSsoZD8iLiI6IiMiKStsLGUuZm9yY2VkKSYmdm9pZCAwIT09aCl7aWYodHlwZW9mIEM9PXR5cGVvZiBoKWNvbnRpbnVlO2coQyxoKX0oZS5zaGFtfHxoJiZoLnNoYW0pJiZzKEMsInNoYW0iLCEwKTtuKGksbCxDLGUpfX19LDkwMzk6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODc0NTooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5hcHBseSxuPXIuY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoYT9uLmJpbmQocyk6ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShzLGFyZ3VtZW50cyl9KX0sNjA4MDooZSx0LGkpPT57dmFyIGE9aSg3NDc2KSxyPWkoOTMwNikscz1pKDYxNiksbj1hKGEuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cihlKTtyZXR1cm4gdm9pZCAwPT09dD9lOnM/bihlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LDYxNjooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDk1NjU6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1hP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19LDM1MDooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTI5Nykscz1GdW5jdGlvbi5wcm90b3R5cGUsbj1hJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89cihzLCJuYW1lIiksZz1vJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uIHNvbWV0aGluZygpe30ubmFtZSxjPW8mJighYXx8YSYmbihzLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpnLENPTkZJR1VSQUJMRTpjfX0sNjcwNjooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTMwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt0cnl7cmV0dXJuIGEocihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbaV0pKX1jYXRjaChlKXt9fX0sNzQ3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KSxyPWkoOTUwNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJGdW5jdGlvbiI9PT1hKGUpKXJldHVybiByKGUpfX0sOTUwNDooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5jYWxsLG49YSYmci5iaW5kLmJpbmQocyxzKTtlLmV4cG9ydHM9YT9uOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGUsYXJndW1lbnRzKX19fSw5NDI5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg2MTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocil7dHJ5e3JldHVybiBhLnByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZShlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoIicrZSsnIiknKSgpfWNhdGNoKGUpe319fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixsPVR5cGVFcnJvcixoPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWgodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBsKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NTc2OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDIxOTUpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ1NzYpLGc9aSgzNCksYz1pKDY2OTkpLGw9aSg5Mjk3KSxoPWkoNzYyOSksQz1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGguc3RhdGUpe3ZhciBmPWguc3RhdGV8fChoLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPUMoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYobChlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxsPWkoODEpLGg9aSg4NTEpLEM9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJkModSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWgoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1sKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe0ModSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLGw9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxoPWkoMjUyOSksQz1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihsKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBoKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpoKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7QyhpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gQyhyLCJ0aHJvdyIsZSl9ciYmQyhyLCJub3JtYWwiKTtyZXR1cm4gaCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLGw9aSgyNzg3KSxoPWkoNjg0MCksQz1pKDgyMjcpLFE9aSg2Mzk1KSxFPUMoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPWwobChzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxoKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksbD1pKDExODEpLGg9bC5lbmZvcmNlLEM9bC5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9aChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZDKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxsPWkoNjExOSksaD0icHJvdG90eXBlIixDPSJzY3JpcHQiLFE9bCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK0MrIj4iK2UrIjwvIitDKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK0MrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtoXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2hdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2hdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLGw9MDtjPmw7KXMuZihlLGk9cltsKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLEM9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPWwoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOkMgaW4gaT9pW0NdOmFbQ10sZW51bWVyYWJsZTpoIGluIGk/aVtoXTphW2hdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxsPWkoNTkxNyksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2g6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihsKXRyeXtyZXR1cm4gaChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsbD1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP2w6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxsPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKGwsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4obCxpKXx8ZyhsLGkpKTtyZXR1cm4gbH19LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSwxMTAzOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxsPXIuaGFzLGg9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7bCh0LGUpJiZoKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxsPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtoKHQsZSkmJmwocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmwocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgbD1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKGwsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhsLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLGw9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpsfSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsbD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9sKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ1NzYpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zOS4wIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoOTAzOSkscz1pKDk1MTkpLG49aSg0MjE1KSxvPWEuc3RydWN0dXJlZENsb25lO2UuZXhwb3J0cz0hIW8mJiFyKChmdW5jdGlvbigpe2lmKCJERU5PIj09PW4mJnM+OTJ8fCJOT0RFIj09PW4mJnM+OTR8fCJCUk9XU0VSIj09PW4mJnM+OTcpcmV0dXJuITE7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDgpLHQ9byhlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9PWUuYnl0ZUxlbmd0aHx8OCE9PXQuYnl0ZUxlbmd0aH0pKX0sNDQ5NTooZSx0LGkpPT57dmFyIGE9aSg5NTE5KSxyPWkoOTAzOSkscz1pKDQ1NzYpLlN0cmluZztlLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcigoZnVuY3Rpb24oKXt2YXIgZT1TeW1ib2woInN5bWJvbCBkZXRlY3Rpb24iKTtyZXR1cm4hcyhlKXx8IShPYmplY3QoZSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmYSYmYTw0MX0pKX0sNTYxMDooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPU1hdGgubWF4LHM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9YShlKTtyZXR1cm4gaTwwP3IoaSt0LDApOnMoaSx0KX19LDU4NTQ6KGUsdCxpKT0+e3ZhciBhPWkoMjc3Nykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyByKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNzY5NjooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPWkoODAxNCkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PWEoZSksaT1yKHQpO2lmKHQhPT1pKXRocm93IG5ldyBzKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gaX19LDUzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzA1NSkscj1pKDc3NTApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShyKGUpKX19LDEyOTE6KGUsdCxpKT0+e3ZhciBhPWkoNzQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6YSh0KX19LDgwMTQ6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD4wP3IodCw5MDA3MTk5MjU0NzQwOTkxKTowfX0sODk4MTooZSx0LGkpPT57dmFyIGE9aSg3NzUwKSxyPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoYShlKSl9fSwyNzc3OihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgzNCkscz1pKDc1Nyksbj1pKDU5NjYpLG89aSg0MjcwKSxnPWkoODIyNyksYz1UeXBlRXJyb3IsbD1nKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFyKGUpfHxzKGUpKXJldHVybiBlO3ZhciBpLGc9bihlLGwpO2lmKGcpe3ZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iik7aT1hKGcsZSx0KTtpZighcihpKXx8cyhpKSlyZXR1cm4gaTt0aHJvdyBuZXcgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9dm9pZCAwPT09dCYmKHQ9Im51bWJlciIpO3JldHVybiBvKGUsdCl9fSw2OTY5OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9aSg3NTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsInN0cmluZyIpO3JldHVybiByKHQpP3Q6dCsiIn19LDIxNDA6KGUsdCxpKT0+e3ZhciBhPXt9O2FbaSg4MjI3KSgidG9TdHJpbmdUYWciKV09InoiO2UuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcoYSl9LDY1NTooZSx0LGkpPT57dmFyIGE9aSg2OTU1KSxyPVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIlN5bWJvbCI9PT1hKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIHIoZSl9fSw2ODIzOmU9Pnt2YXIgdD1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSwzMzkyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9MCxzPU1hdGgucmFuZG9tKCksbj1hKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrbigrK3IrcywzNil9fSw3MDQwOihlLHQsaSk9Pnt2YXIgYT1pKDQ0OTUpO2UuZXhwb3J0cz1hJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSw4Njg2OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5MDM5KTtlLmV4cG9ydHM9YSYmcigoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwyODEyOmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aWYoZTxpKXRocm93IG5ldyB0KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiBlfX0sODYyMjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSkscz1hLldlYWtNYXA7ZS5leHBvcnRzPXIocykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpfSw4MjI3OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg1NzQ1KSxzPWkoOTI5Nyksbj1pKDMzOTIpLG89aSg0NDk1KSxnPWkoNzA0MCksYz1hLlN5bWJvbCxsPXIoIndrcyIpLGg9Zz9jLmZvcnx8YzpjJiZjLndpdGhvdXRTZXR0ZXJ8fG47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3MobCxlKXx8KGxbZV09byYmcyhjLGUpP2NbZV06aCgiU3ltYm9sLiIrZSkpO3JldHVybiBsW2VdfX0sNjU3MzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoMjEwNikscz1pKDMyMzgpLG49QXJyYXlCdWZmZXIucHJvdG90eXBlO2EmJiEoImRldGFjaGVkImluIG4pJiZyKG4sImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBzKHRoaXMpfX0pfSw3OTM2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg1NjM2KTtyJiZhKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMH0se3RyYW5zZmVyVG9GaXhlZExlbmd0aDpmdW5jdGlvbiB0cmFuc2ZlclRvRml4ZWRMZW5ndGgoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMSl9fSl9LDgxMDA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24gdHJhbnNmZXIoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LDQxMTQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg5ODEpLHM9aSg2MTk4KSxuPWkoNDUyNyksbz1pKDY4MzcpO2Eoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOmkoOTAzOSkoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5wdXNoKCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7cHVzaDpmdW5jdGlvbiBwdXNoKGUpe3ZhciB0PXIodGhpcyksaT1zKHQpLGE9YXJndW1lbnRzLmxlbmd0aDtvKGkrYSk7Zm9yKHZhciBnPTA7ZzxhO2crKyl7dFtpXT1hcmd1bWVudHNbZ107aSsrfW4odCxpKTtyZXR1cm4gaX19KX0sODExMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDY3OSksbj1pKDg1NTEpLG89aSg0OTAxKSxnPWkoMjc4NyksYz1pKDIxMDYpLGw9aSg0NjU5KSxoPWkoOTAzOSksQz1pKDkyOTcpLFE9aSg4MjI3KSxFPWkoNzY1NykuSXRlcmF0b3JQcm90b3R5cGUsdT1pKDM3MjQpLGQ9aSg2Mzk1KSxmPSJjb25zdHJ1Y3RvciIscD0iSXRlcmF0b3IiLG09USgidG9TdHJpbmdUYWciKSx5PVR5cGVFcnJvcix3PXJbcF0sYj1kfHwhbyh3KXx8dy5wcm90b3R5cGUhPT1FfHwhaCgoZnVuY3Rpb24oKXt3KHt9KX0pKSxEPWZ1bmN0aW9uIEl0ZXJhdG9yKCl7cyh0aGlzLEUpO2lmKGcodGhpcyk9PT1FKXRocm93IG5ldyB5KCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yPWZ1bmN0aW9uKGUsdCl7dT9jKEUsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7bih0aGlzKTtpZih0aGlzPT09RSl0aHJvdyBuZXcgeSgiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTtDKHRoaXMsZSk/dGhpc1tlXT10OmwodGhpcyxlLHQpfX0pOkVbZV09dH07QyhFLG0pfHxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yKG0scCk7IWImJkMoRSxmKSYmRVtmXSE9PU9iamVjdHx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihmLEQpO0QucHJvdG90eXBlPUU7YSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpifSx7SXRlcmF0b3I6RH0pfSwxMTQ4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZXZlcnk6ZnVuY3Rpb24gZXZlcnkoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiFyKHQsKGZ1bmN0aW9uKHQsYSl7aWYoIWUodCxpKyspKXJldHVybiBhKCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMjQ4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoOTU2NSkscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1pKDk0NjIpLGM9aSg2MzE5KSxsPWkoNjM5NSksaD1nKChmdW5jdGlvbigpe2Zvcih2YXIgZSx0LGk9dGhpcy5pdGVyYXRvcixhPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0Ozspe2U9bihyKHMsaSkpO2lmKHRoaXMuZG9uZT0hIWUuZG9uZSlyZXR1cm47dD1lLnZhbHVlO2lmKGMoaSxhLFt0LHRoaXMuY291bnRlcisrXSwhMCkpcmV0dXJuIHR9fSkpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtmaWx0ZXI6ZnVuY3Rpb24gZmlsdGVyKGUpe24odGhpcyk7cyhlKTtyZXR1cm4gbmV3IGgobyh0aGlzKSx7cHJlZGljYXRlOmV9KX19KX0sMTE2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZmluZDpmdW5jdGlvbiBmaW5kKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4gcih0LChmdW5jdGlvbih0LGEpe2lmKGUodCxpKyspKXJldHVybiBhKHQpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KX0sNzU4ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2ZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cih0LChmdW5jdGlvbih0KXtlKHQsaSsrKX0pLHtJU19SRUNPUkQ6ITB9KX19KX0sMTcwMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNzEzKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDppKDYzOTUpfSx7bWFwOnJ9KX0sODIzNzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1UeXBlRXJyb3I7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT1hcmd1bWVudHMubGVuZ3RoPDIsYT1pP3ZvaWQgMDphcmd1bWVudHNbMV0sYz0wO3IodCwoZnVuY3Rpb24odCl7aWYoaSl7aT0hMTthPXR9ZWxzZSBhPWUoYSx0LGMpO2MrK30pLHtJU19SRUNPUkQ6ITB9KTtpZihpKXRocm93IG5ldyBnKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIik7cmV0dXJuIGF9fSl9LDM1Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtzb21lOmZ1bmN0aW9uIHNvbWUoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEoKX0pLHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSwxODA2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTUxKSxzPWkoMjY1Miksbj1pKDE3NjcpLG89W10ucHVzaDthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7dG9BcnJheTpmdW5jdGlvbiB0b0FycmF5KCl7dmFyIGU9W107cyhuKHIodGhpcykpLG8se3RoYXQ6ZSxJU19SRUNPUkQ6ITB9KTtyZXR1cm4gZX19KX0sMTY4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDg3NDUpLG49aSg3NjgwKSxvPWkoNjA0MyksZz1pKDkzMDYpLGM9aSgxMTAzKSxsPXIuUHJvbWlzZSxoPSExO2Eoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6IWx8fCFsLnRyeXx8YygoZnVuY3Rpb24oKXtsLnRyeSgoZnVuY3Rpb24oZSl7aD04PT09ZX0pLDgpfSkpLmVycm9yfHwhaH0se3RyeTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjE/bihhcmd1bWVudHMsMSk6W10saT1vLmYodGhpcyksYT1jKChmdW5jdGlvbigpe3JldHVybiBzKGcoZSksdm9pZCAwLHQpfSkpOyhhLmVycm9yP2kucmVqZWN0OmkucmVzb2x2ZSkoYS52YWx1ZSk7cmV0dXJuIGkucHJvbWlzZX19KX0sNDYyODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNjA0Myk7YSh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCl7dmFyIGU9ci5mKHRoaXMpO3JldHVybntwcm9taXNlOmUucHJvbWlzZSxyZXNvbHZlOmUucmVzb2x2ZSxyZWplY3Q6ZS5yZWplY3R9fX0pfSw5NDc5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSgzNzI0KSxzPWkoMjEwNiksbj1pKDc5NzkpLG89aSg5MDM5KSxnPWEuUmVnRXhwLGM9Zy5wcm90b3R5cGU7ciYmbygoZnVuY3Rpb24oKXt2YXIgZT0hMDt0cnl7ZygiLiIsImQiKX1jYXRjaCh0KXtlPSExfXZhciB0PXt9LGk9IiIsYT1lPyJkZ2ltc3kiOiJnaW1zeSIsYWRkR2V0dGVyPWZ1bmN0aW9uKGUsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OmZ1bmN0aW9uKCl7aSs9YTtyZXR1cm4hMH19KX0scj17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07ZSYmKHIuaGFzSW5kaWNlcz0iZCIpO2Zvcih2YXIgcyBpbiByKWFkZEdldHRlcihzLHJbc10pO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsImZsYWdzIikuZ2V0LmNhbGwodCkhPT1hfHxpIT09YX0pKSYmcyhjLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6bn0pfSw3NjQyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNDQwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImRpZmZlcmVuY2UiKX0se2RpZmZlcmVuY2U6cn0pfSw4MDA0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg5MDM5KSxzPWkoODc1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpbnRlcnNlY3Rpb24iKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9PVN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSkpfSkpfSx7aW50ZXJzZWN0aW9uOnN9KX0sMzg1MzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDQ0OSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpc0Rpc2pvaW50RnJvbSIpfSx7aXNEaXNqb2ludEZyb206cn0pfSw1ODc2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzODM4KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3Vic2V0T2YiKX0se2lzU3Vic2V0T2Y6cn0pfSwyNDc1OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTI3KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3VwZXJzZXRPZiIpfSx7aXNTdXBlcnNldE9mOnJ9KX0sNTAyNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMzY1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJzeW1tZXRyaWNEaWZmZXJlbmNlIil9LHtzeW1tZXRyaWNEaWZmZXJlbmNlOnJ9KX0sMTY5ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDIwNCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJ1bmlvbiIpfSx7dW5pb246cn0pfSw3NDY3OihlLHQsaSk9Pnt2YXIgYT1pKDc2MjgpLHI9aSg0NjQ0KSxzPXIuYVR5cGVkQXJyYXksbj1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qsbz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtuKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24gdG9SZXZlcnNlZCgpe3JldHVybiBhKHModGhpcyksbyh0aGlzKSl9KSl9LDQ3MzI6KGUsdCxpKT0+e3ZhciBhPWkoNDY0NCkscj1pKDk1MDQpLHM9aSg5MzA2KSxuPWkoNTM3MCksbz1hLmFUeXBlZEFycmF5LGc9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbD1yKGEuVHlwZWRBcnJheVByb3RvdHlwZS5zb3J0KTtjKCJ0b1NvcnRlZCIsKGZ1bmN0aW9uIHRvU29ydGVkKGUpe3ZvaWQgMCE9PWUmJnMoZSk7dmFyIHQ9byh0aGlzKSxpPW4oZyh0KSx0KTtyZXR1cm4gbChpLGUpfSkpfSw5NTc3OihlLHQsaSk9Pnt2YXIgYT1pKDk5MjgpLHI9aSg0NjQ0KSxzPWkoMTEwOCksbj1pKDEyOTEpLG89aSg1ODU0KSxnPXIuYVR5cGVkQXJyYXksYz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixsPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxoPSEhZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCk7bCgid2l0aCIse3dpdGg6ZnVuY3Rpb24oZSx0KXt2YXIgaT1nKHRoaXMpLHI9bihlKSxsPXMoaSk/byh0KTordDtyZXR1cm4gYShpLGMoaSkscixsKX19LndpdGgsIWgpfSw4OTkyOihlLHQsaSk9PntpKDgxMTEpfSwzMjE1OihlLHQsaSk9PntpKDExNDgpfSw0NTIwOihlLHQsaSk9PntpKDI0ODkpfSwyNTc3OihlLHQsaSk9PntpKDExNil9LDM5NDk6KGUsdCxpKT0+e2koNzU4OCl9LDE0NTQ6KGUsdCxpKT0+e2koMTcwMSl9LDg4NzI6KGUsdCxpKT0+e2koODIzNyl9LDc1NTA6KGUsdCxpKT0+e2koMzU3OSl9LDE3OTU6KGUsdCxpKT0+e2koMTgwNil9LDUyNDc6KGUsdCxpKT0+e2koMTY4OSl9LDQ5Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSg3NzUxKSxuPWkoNjk4MCksbz1pKDQ5MTMpLmYsZz1pKDkyOTcpLGM9aSg2NzkpLGw9aSgzMTY3KSxoPWkoMjYwMyksQz1pKDUwMDIpLFE9aSg4NTc0KSxFPWkoMzcyNCksdT1pKDYzOTUpLGQ9IkRPTUV4Y2VwdGlvbiIsZj1zKCJFcnJvciIpLHA9cyhkKSxtPWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2ModGhpcyx5KTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9aChlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSksaT1oKGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLGE9bmV3IHAodCxpKSxyPW5ldyBmKHQpO3IubmFtZT1kO28oYSwic3RhY2siLG4oMSxRKHIuc3RhY2ssMSkpKTtsKGEsdGhpcyxtKTtyZXR1cm4gYX0seT1tLnByb3RvdHlwZT1wLnByb3RvdHlwZSx3PSJzdGFjayJpbiBuZXcgZihkKSxiPSJzdGFjayJpbiBuZXcgcCgxLDIpLEQ9cCYmRSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGQpLFM9ISghRHx8RC53cml0YWJsZSYmRC5jb25maWd1cmFibGUpLGs9dyYmIVMmJiFiO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6dXx8a30se0RPTUV4Y2VwdGlvbjprP206cH0pO3ZhciBSPXMoZCksTj1SLnByb3RvdHlwZTtpZihOLmNvbnN0cnVjdG9yIT09Uil7dXx8byhOLCJjb25zdHJ1Y3RvciIsbigxLFIpKTtmb3IodmFyIEcgaW4gQylpZihnKEMsRykpe3ZhciBNPUNbR10sVT1NLnM7ZyhSLFUpfHxvKFIsVSxuKDYsTS5jKSl9fX0sMzYxMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDIxMDYpLG49aSgzNzI0KSxvPVR5cGVFcnJvcixnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPXIuc2VsZiE9PXI7dHJ5e2lmKG4pe3ZhciBsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iociwic2VsZiIpOyFjJiZsJiZsLmdldCYmbC5lbnVtZXJhYmxlfHxzKHIsInNlbGYiLHtnZXQ6ZnVuY3Rpb24gc2VsZigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24gc2VsZihlKXtpZih0aGlzIT09cil0aHJvdyBuZXcgbygiSWxsZWdhbCBpbnZvY2F0aW9uIik7ZyhyLCJzZWxmIix7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfWVsc2UgYSh7Z2xvYmFsOiEwLHNpbXBsZTohMCxmb3JjZWQ6Y30se3NlbGY6cn0pfWNhdGNoKGUpe319LDQ2MDM6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmFwcGVuZCksbD1yKGcuZGVsZXRlKSxoPXIoZy5mb3JFYWNoKSxDPXIoW10ucHVzaCksUT1uZXcgbygiYT0xJmE9MiZiPTMiKTtRLmRlbGV0ZSgiYSIsMSk7US5kZWxldGUoImIiLHZvaWQgMCk7USsiIiE9ImE9MiImJmEoZywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIGwodGhpcyxlKTt2YXIgYT1bXTtoKHRoaXMsKGZ1bmN0aW9uKGUsdCl7QyhhLHtrZXk6dCx2YWx1ZTplfSl9KSk7bih0LDEpO2Zvcih2YXIgcixvPXMoZSksZz1zKGkpLFE9MCxFPTAsdT0hMSxkPWEubGVuZ3RoO1E8ZDspe3I9YVtRKytdO2lmKHV8fHIua2V5PT09byl7dT0hMDtsKHRoaXMsci5rZXkpfWVsc2UgRSsrfWZvcig7RTxkOykocj1hW0UrK10pLmtleT09PW8mJnIudmFsdWU9PT1nfHxjKHRoaXMsci5rZXksci52YWx1ZSl9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNzU2NjooZSx0LGkpPT57dmFyIGE9aSg2ODQwKSxyPWkoOTUwNCkscz1pKDY1NSksbj1pKDI4MTIpLG89VVJMU2VhcmNoUGFyYW1zLGc9by5wcm90b3R5cGUsYz1yKGcuZ2V0QWxsKSxsPXIoZy5oYXMpLGg9bmV3IG8oImE9MSIpOyFoLmhhcygiYSIsMikmJmguaGFzKCJhIix2b2lkIDApfHxhKGcsImhhcyIsKGZ1bmN0aW9uIGhhcyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGk9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09aSlyZXR1cm4gbCh0aGlzLGUpO3ZhciBhPWModGhpcyxlKTtuKHQsMSk7Zm9yKHZhciByPXMoaSksbz0wO288YS5sZW5ndGg7KWlmKGFbbysrXT09PXIpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sODcyMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTUwNCkscz1pKDIxMDYpLG49VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxvPXIobi5mb3JFYWNoKTthJiYhKCJzaXplImluIG4pJiZzKG4sInNpemUiLHtnZXQ6ZnVuY3Rpb24gc2l6ZSgpe3ZhciBlPTA7byh0aGlzLChmdW5jdGlvbigpe2UrK30pKTtyZXR1cm4gZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19LHQ9e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhpKXt2YXIgYT10W2ldO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuZXhwb3J0czt2YXIgcj10W2ldPXtleHBvcnRzOnt9fTtlW2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pO3JldHVybiByLmV4cG9ydHN9X193ZWJwYWNrX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBpIGluIHQpX193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsaSkmJiFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSxpKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7ZW51bWVyYWJsZTohMCxnZXQ6dFtpXX0pfTtfX3dlYnBhY2tfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpO3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gZ2xvYmFsVGhpcy5wZGZqc1dvcmtlciA9IHt9O19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLHtXb3JrZXJNZXNzYWdlSGFuZGxlcjooKT0+V29ya2VyTWVzc2FnZUhhbmRsZXJ9KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDQxMTQpLF9fd2VicGFja19yZXF1aXJlX18oNjU3MyksX193ZWJwYWNrX3JlcXVpcmVfXyg4MTAwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc5MzYpLF9fd2VicGFja19yZXF1aXJlX18oNDYyOCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NjQyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMDQpLF9fd2VicGFja19yZXF1aXJlX18oMzg1MyksX193ZWJwYWNrX3JlcXVpcmVfXyg1ODc2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NzUpLF9fd2VicGFja19yZXF1aXJlX18oNTAyNCksX193ZWJwYWNrX3JlcXVpcmVfXygxNjk4KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc0NjcpLF9fd2VicGFja19yZXF1aXJlX18oNDczMiksX193ZWJwYWNrX3JlcXVpcmVfXyg5NTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg5OTIpLF9fd2VicGFja19yZXF1aXJlX18oMTQ1NCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTUwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNTI0NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MDMpLF9fd2VicGFja19yZXF1aXJlX18oNzU2NiksX193ZWJwYWNrX3JlcXVpcmVfXyg4NzIxKTtjb25zdCBpPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSxhPVsxLDAsMCwxLDAsMF0scj1bLjAwMSwwLDAsLjAwMSwwLDBdLHM9MS4zNSxuPS4zNSxvPS4yNTkyNTkyNTkyNTkyNTkyNCxnPTEsYz0yLGw9NCxoPTgsQz0xNixRPTY0LEU9MTI4LHU9MjU2LGQ9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGY9MyxwPTksbT0xMyx5PTE1LHc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sYj0wLEQ9NCxTPTEsaz0yLFI9MyxOPTEsRz0yLE09MyxVPTQseD01LEw9NixIPTcsSj04LHY9OSxZPTEwLEs9MTEsVD0xMixxPTEzLE89MTQsVz0xNSxqPTE2LFg9MTcsVj0yMCxaPSJHcm91cCIsXz0iUiIsej0xLCQ9MixBQT00LGVBPTE2LHRBPTMyLGlBPTEyOCxhQT01MTIsckE9MSxzQT0yLG5BPTQwOTYsb0E9ODE5MixnQT0zMjc2OCxJQT02NTUzNixjQT0xMzEwNzIsbEE9MTA0ODU3NixoQT0yMDk3MTUyLENBPTgzODg2MDgsQkE9MTY3NzcyMTYsUUE9MSxFQT0yLHVBPTMsZEE9NCxmQT01LHBBPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxtQT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0seUE9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSx3QT0xLGJBPTUsREE9MSxGQT0yLFNBPTMsa0E9NCxSQT01LE5BPTYsR0E9NyxNQT04LFVBPTkseEE9MTAsTEE9MTEsSEE9MTIsSkE9MTMsdkE9MTQsWUE9MTUsS0E9MTYsVEE9MTcscUE9MTgsT0E9MTksUEE9MjAsV0E9MjEsakE9MjIsWEE9MjMsVkE9MjQsWkE9MjUsX0E9MjYsekE9MjcsJEE9MjgsQWU9MjksZWU9MzAsdGU9MzEsaWU9MzIsYWU9MzMscmU9MzQsc2U9MzUsbmU9MzYsb2U9MzcsZ2U9MzgsSWU9MzksY2U9NDAsbGU9NDEsaGU9NDIsQ2U9NDMsQmU9NDQsUWU9NDUsRWU9NDYsdWU9NDcsZGU9NDgsZmU9NDkscGU9NTAsbWU9NTEseWU9NTIsd2U9NTMsYmU9NTQsRGU9NTUsRmU9NTYsU2U9NTcsa2U9NTgsUmU9NTksTmU9NjAsR2U9NjEsTWU9NjIsVWU9NjMseGU9NjQsTGU9NjUsSGU9NjYsSmU9NjcsdmU9NjgsWWU9NjksS2U9NzAsVGU9NzEscWU9NzIsT2U9NzMsUGU9NzQsV2U9NzUsamU9NzYsWGU9NzcsVmU9ODAsWmU9ODEsX2U9ODMsemU9ODQsJGU9ODUsQXQ9ODYsZXQ9ODcsdHQ9ODgsaXQ9ODksYXQ9OTAscnQ9OTEsc3Q9OTIsbnQ9OTMsb3Q9MSxndD0yO2xldCBJdD13QTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBJdH1mdW5jdGlvbiBpbmZvKGUpe0l0Pj1iQSYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe0l0Pj13QSYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBjdD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfX1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXR9fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT04MTkyO2lmKHQ8aSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjx0O3IrPWkpe2NvbnN0IHM9TWF0aC5taW4ocitpLHQpLG49ZS5zdWJhcnJheShyLHMpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKWlbYV09MjU1JmUuY2hhckNvZGVBdChhKTtyZXR1cm4gaX1mdW5jdGlvbiBzdHJpbmczMihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGVjb2Rlcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8ucGxhdGZvcm0/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc0ZpcmVmb3g6InN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3I/LnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiRmlyZWZveCIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITEsaXNXaW5kb3dzOiExLGlzRmlyZWZveDohMX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX19Y29uc3QgbHQ9QXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSwoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxpKXtyZXR1cm5gIyR7bHRbZV19JHtsdFt0XX0ke2x0W2ldfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGk7aWYoZVswXSl7aWYoZVswXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzBdO3RbMl0qPWVbMF07aWYoZVszXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzNdO3RbM10qPWVbM119ZWxzZXtpPXRbMF07dFswXT10WzFdO3RbMV09aTtpPXRbMl07dFsyXT10WzNdO3RbM109aTtpZihlWzFdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMl07dFsyXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNV07dFsyXSs9ZVs0XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGk9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvaSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvaV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgaT10aGlzLmFwcGx5VHJhbnNmb3JtKGUsdCksYT10aGlzLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1pbihpWzFdLGFbMV0sclsxXSxzWzFdKSxNYXRoLm1heChpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1heChpWzFdLGFbMV0sclsxXSxzWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGk9ZVswXSp0WzBdK2VbMV0qdFsyXSxhPWVbMF0qdFsxXStlWzFdKnRbM10scj1lWzJdKnRbMF0rZVszXSp0WzJdLHM9ZVsyXSp0WzFdK2VbM10qdFszXSxuPShpK3MpLzIsbz1NYXRoLnNxcnQoKGkrcykqKjItNCooaSpzLXIqYSkpLzIsZz1uK298fDEsYz1uLW98fDE7cmV0dXJuW01hdGguc3FydChnKSxNYXRoLnNxcnQoYyldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksYT1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGk+YSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscz1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiByPnM/bnVsbDpbaSxyLGEsc119c3RhdGljI0EoZSx0LGksYSxyLHMsbixvLGcsYyl7aWYoZzw9MHx8Zz49MSlyZXR1cm47Y29uc3QgbD0xLWcsaD1nKmcsQz1oKmcsUT1sKihsKihsKmUrMypnKnQpKzMqaCppKStDKmEsRT1sKihsKihsKnIrMypnKnMpKzMqaCpuKStDKm87Y1swXT1NYXRoLm1pbihjWzBdLFEpO2NbMV09TWF0aC5taW4oY1sxXSxFKTtjWzJdPU1hdGgubWF4KGNbMl0sUSk7Y1szXT1NYXRoLm1heChjWzNdLEUpfXN0YXRpYyNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihNYXRoLmFicyhnKTwxZS0xMil7TWF0aC5hYnMoYyk+PTFlLTEyJiZ0aGlzLiNBKGUsdCxpLGEscixzLG4sbywtbC9jLGgpO3JldHVybn1jb25zdCBDPWMqKjItNCpsKmc7aWYoQzwwKXJldHVybjtjb25zdCBRPU1hdGguc3FydChDKSxFPTIqZzt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMrUSkvRSxoKTt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMtUSkvRSxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGksYSxyLHMsbixvLGcpe2lmKGcpe2dbMF09TWF0aC5taW4oZ1swXSxlLG4pO2dbMV09TWF0aC5taW4oZ1sxXSx0LG8pO2dbMl09TWF0aC5tYXgoZ1syXSxlLG4pO2dbM109TWF0aC5tYXgoZ1szXSx0LG8pfWVsc2UgZz1bTWF0aC5taW4oZSxuKSxNYXRoLm1pbih0LG8pLE1hdGgubWF4KGUsbiksTWF0aC5tYXgodCxvKV07dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooaS1yKS1lK24pLDYqKGUtMippK3IpLDMqKGktZSksZyk7dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooYS1zKS10K28pLDYqKHQtMiphK3MpLDMqKGEtdCksZyk7cmV0dXJuIGd9fWNvbnN0IGh0PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlKXtpZihlWzBdPj0iw68iKXtsZXQgdDtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe3Q9InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7dD0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBpPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLGE9c3RyaW5nVG9CeXRlcyhlKSxyPWkuZGVjb2RlKGEpO3JldHVybiByLmluY2x1ZGVzKCIbIik/ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpOnJ9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGkpO2lmKDI3PT09cil7Zm9yKDsrK2k8YSYmMjchPT1lLmNoYXJDb2RlQXQoaSk7KTtjb250aW51ZX1jb25zdCBzPWh0W3JdO3QucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQoaSkpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKWlmKGVbaV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX1sZXQgQ3Q9bnVsbCxCdD1udWxsO2Z1bmN0aW9uIHRvSGV4VXRpbChlKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUudG9IZXg/ZS50b0hleCgpOkFycmF5LmZyb20oZSwoZT0+bHRbZV0pKS5qb2luKCIiKX1fX3dlYnBhY2tfcmVxdWlyZV9fKDMyMTUpO2NvbnN0IFF0PVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksRXQ9U3ltYm9sKCJFT0YiKTtsZXQgdXQ9T2JqZWN0LmNyZWF0ZShudWxsKSxkdD1PYmplY3QuY3JlYXRlKG51bGwpLGZ0PU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBkdFtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiB1dFtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IHB0PWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gcHR9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9tYXA9bmV3IE1hcDt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXB0fWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWFzeW5jIGdldEFzeW5jKGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOmF9Z2V0QXJyYXkoZSx0LGkpe2xldCBhPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcC5nZXQoaSkpfWEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKGE9dGhpcy54cmVmLmZldGNoKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWdldEtleXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLmtleXMoKV19Z2V0UmF3VmFsdWVzKCl7cmV0dXJuWy4uLnRoaXMuX21hcC52YWx1ZXMoKV19c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5fbWFwKXtsZXQgZT1yLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Iuc2V0KHQsZSl9ZWxzZSBpZighKGkmJmEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2goYSl9Zm9yKGNvbnN0W3QsaV1vZiByKXtpZigxPT09aS5sZW5ndGh8fCEoaVswXWluc3RhbmNlb2YgRGljdCkpe2EuX21hcC5zZXQodCxpWzBdKTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBlLl9tYXApci5fbWFwLmhhcyh0KXx8ci5fbWFwLnNldCh0LGkpO3Iuc2l6ZT4wJiZhLl9tYXAuc2V0KHQscil9ci5jbGVhcigpO3JldHVybiBhLnNpemU+MD9hOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe2RlbGV0ZSB0aGlzLl9tYXBbZV19fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWZ0W2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gaSYmIjAiIT09aVsxXT9mdFtlXT1uZXcgUmVmKHBhcnNlSW50KGlbMV0pLGlbMl0/cGFyc2VJbnQoaVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgaT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBmdFtpXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiExfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKCl7cmV0dXJuIG51bGx9cGVla0J5dGUoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpOy0xIT09ZSYmdGhpcy5wb3MtLTtyZXR1cm4gZX1wZWVrQnl0ZXMoZSl7Y29uc3QgdD10aGlzLmdldEJ5dGVzKGUpO3RoaXMucG9zLT10Lmxlbmd0aDtyZXR1cm4gdH1nZXRVaW50MTYoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpLHQ9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/LTE6KGU8PDgpK3R9Z2V0SW50MzIoKXtyZXR1cm4odGhpcy5nZXRCeXRlKCk8PDI0KSsodGhpcy5nZXRCeXRlKCk8PDE2KSsodGhpcy5nZXRCeXRlKCk8PDgpK3RoaXMuZ2V0Qnl0ZSgpfWdldEJ5dGVSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVSYW5nZWAgY2FsbGVkIil9Z2V0U3RyaW5nKGUpe3JldHVybiBieXRlc1RvU3RyaW5nKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fWNvbnN0IG10PS9eWzEtOV1cLlxkJC8seXQ9MioqMzEtMTtmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscik7cis9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCByO2NvbnN0IHM9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhyfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHJ9Y29uc3Qgd3Q9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT0iTSIucmVwZWF0KGUvMWUzfDApK3d0W2UlMWUzLzEwMHwwXSt3dFsxMCsoZSUxMDAvMTB8MCldK3d0WzIwK2UlMTBdO3JldHVybiB0P2kudG9Mb3dlckNhc2UoKTppfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJigwPT09ZS5sZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgZVswXSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT97bmFtZTppWzFdLHBvczpwYXJzZUludChpWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPDMzfHxyPjEyNnx8MzU9PT1yfHw0MD09PXJ8fDQxPT09cnx8NjA9PT1yfHw2Mj09PXJ8fDkxPT09cnx8OTM9PT1yfHwxMjM9PT1yfHwxMjU9PT1yfHw0Nz09PXJ8fDM3PT09cil7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAjJHtyLnRvU3RyaW5nKDE2KX1gKTtpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGksYSl7aWYoIWUpcmV0dXJuO2xldCByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpcmV0dXJuO3I9ZTthLnB1dChyKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKV9jb2xsZWN0SlMocix0LGksYSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgYTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoYT10KTthJiY9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiZpLnB1c2goYSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsaSxhKX1yJiZhLnJlbW92ZShyKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihyKWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBzPXJbdF07aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpe2NvbnN0IHI9aVt0XTtpZighciljb250aW51ZTtjb25zdCBuPVtdO19jb2xsZWN0SlMocy5nZXRSYXcodCksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhW3JdPW4pfX1pZih0LmhhcygiQSIpKXtjb25zdCBpPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGksbmV3IFJlZlNldCk7aS5sZW5ndGg+MCYmKGEuQWN0aW9uPWkpfXJldHVybiBvYmplY3RTaXplKGEpPjA/YTpudWxsfWNvbnN0IGJ0PXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUuY29kZVBvaW50QXQodCk7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZ0Kys7eWllbGQgaX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9YnRbcl07aWYocyl7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKHMpO2k9YSsxfX1lbHNle2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJmErKztpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGk9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGkmJmlbMV09PT1pWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHtpWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7aVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChpKXx8IS9eW1x3LVxcXSskLy50ZXN0KGkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTppLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGksITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3Qgbj1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4obil8fG48LTkwfHxuPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtpLGFdb2YgZSl7aWYoIWkuc3RhcnRzV2l0aChkKSljb250aW51ZTtsZXQgZT10LmdldChhLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoYS5wYWdlSW5kZXgsZSl9ZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9KGUpP2U6c3RyaW5nVG9VVEYxNlN0cmluZyhlLCEwKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTt0LnB1c2gobHRbYT4+OCYyNTVdLGx0WzI1NSZhXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGk9W107dCYmaS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxpKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsaV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsaV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtpfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShpLGEpO2xldCByPWkrZTtyPmEmJihyPWEpO3RoaXMucG9zPXI7cmV0dXJuIHQuc3ViYXJyYXkoaSxyKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1pO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxpPXRoaXMubnVtQ2h1bmtzO3Q8aTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBpPXRoaXMuY2h1bmtTaXplO2lmKGUlaSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBhPWUrdC5ieXRlTGVuZ3RoO2lmKGElaSE9MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCByPU1hdGguZmxvb3IoZS9pKSxzPU1hdGguZmxvb3IoKGEtMSkvaSkrMTtmb3IobGV0IGU9cjtlPHM7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGk9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWk7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgaT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGk+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCByPWk7cjxhOysrcilpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgaT0wO2k8dDsrK2kpe2NvbnN0IGE9KGUraSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpe2E+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxhKTtyZXR1cm4gdC5zdWJhcnJheShpLGEpfWxldCByPWkrZTtyPmEmJihyPWEpO3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxyKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksaT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxpOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PWk7cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgaT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoaS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxyPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOnMsZG9uZTpufSk9Pnt0cnl7aWYobil7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDtlKHQpO3JldHVybn1yKz1zLmJ5dGVMZW5ndGg7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6cn0pO2EucHVzaChzKTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxpPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGkpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGkuYWRkKHQpO2lmKDA9PT1pLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcj1bXTtmb3IoY29uc3QgZSBvZiBpKXtsZXQgaT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFpKXtpPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxpKTtyLnB1c2goZSl9aS5wdXNoKHQpfWlmKHIubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhyKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxpPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxpKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgaT10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHI9W107Zm9yKGxldCBlPWk7ZTxhOysrZSlyLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGkuYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhpLmVuZCk7Zm9yKGxldCBpPWU7aTxhOysraSl0LmluY2x1ZGVzKGkpfHx0LnB1c2goaSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgaT0tMSxhPS0xO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzOysrcil7Y29uc3Qgcz1lW3JdO2k8MCYmKGk9cyk7aWYoYT49MCYmYSsxIT09cyl7dC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6YSsxfSk7aT1zfXIrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazpzKzF9KTthPXN9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssaT12b2lkIDA9PT1lLmJlZ2luLGE9aT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLHI9YSt0LmJ5dGVMZW5ndGgscz1NYXRoLmZsb29yKGEvdGhpcy5jaHVua1NpemUpLG49cjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChyL3RoaXMuY2h1bmtTaXplKTtpZihpKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9cn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYSx0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9cztlPG47KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoaSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goaSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhuKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fV9fd2VicGFja19yZXF1aXJlX18oNDUyMCksX193ZWJwYWNrX3JlcXVpcmVfXyg5NDc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODg3Mik7Y2xhc3MgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGksMCk7cmV0dXJuIGl9Z2V0UmdiSXRlbShlLHQsaSxhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsaSxhLHIscyxuLG8sZyl7Y29uc3QgYz10Kmk7bGV0IGw9bnVsbDtjb25zdCBoPTE8PG4sQz1pIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG4pKWw9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZjPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9bjw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxpLDAsbiwwKTtpZihDKXtsPW5ldyBVaW50OEFycmF5KDMqYyk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGM7Kyt0KXtjb25zdCBhPTMqb1t0XTtsW2UrK109aVthXTtsW2UrK109aVthKzFdO2xbZSsrXT1pW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGM7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109aVtyXTtlW3QrK109aVtyKzFdO2VbdCsrXT1pW3IrMl07dCs9Z319fWVsc2UgaWYoQyl7bD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypjKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYyxsLDAsbiwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLG4sZyk7aWYobClpZihDKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsaSxhLHIscyxuKXtuPTEhPT1uPzA6bjtjb25zdCBvPWkvcixnPWEvcztsZXQgYyxsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksQz0zKmk7Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9TWF0aC5mbG9vcihpKmcpKkM7Zm9yKGxldCBpPTA7aTxyO2krKyl7Yz1hK2hbaV07dFtsKytdPWVbYysrXTt0W2wrK109ZVtjKytdO3RbbCsrXT1lW2MrK107bCs9bn19fShsLGUsdCxpLGEscixnKTtlbHNle2xldCB0PTAsaT0wO2ZvcihsZXQgcj0wLG49YSpzO3I8bjtyKyspe2VbdCsrXT1sW2krK107ZVt0KytdPWxbaSsrXTtlW3QrK109bFtpKytdO3QrPWd9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxpLGEpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IHIscztpZihlIGluc3RhbmNlb2YgUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBOYW1lJiYocj1lLm5hbWUpOyhyfHxzKSYmaS5zZXQocixzLGEpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGkpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGE9aS5nZXRCeVJlZihlKTtpZihhKXJldHVybiBhO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWkuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixzKTtyZXR1cm4gc31zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQoZSx0LHIpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbj10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixuKTtyZXR1cm4gbn1zdGF0aWMgX3BhcnNlKGUsdCxpPW51bGwsYSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9aS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLl9wYXJzZShzLHQsaSxhKTtlPXM7YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbixvLGcsYyxsO3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2w9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLGwpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtsPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgaD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxsLGgpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IEM9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1DLmdldCgiTiIpO2NvbnN0IFE9Qy5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9TWF0aC5tYXgoMCxNYXRoLm1pbih0LmZldGNoSWZSZWYoZVsyXSksMjU1KSksdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7cn1gKTtyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpe3dhcm4oIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybiBzaGFkb3codGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX0sZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLGw9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLEM9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1DP3I6MDtjb25zdCBFPUM/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkobCppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShsKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxsO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9bH19Q3x8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTtjb25zdCBhPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9aS5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2l9YCk7Zm9yKGxldCBlPTA7ZTxhOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmaS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9dGhpcy5iYXNlLm51bUNvbXBzLHM9ZVt0XSpyO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAscywxLGksYSw4LDApfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMuYmFzZSxnPW8ubnVtQ29tcHMsYz1vLmdldE91dHB1dExlbmd0aChnLG4pLGw9dGhpcy5sb29rdXA7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3QgaT1lW3QrK10qZztvLmdldFJnYkJ1ZmZlcihsLGksMSxhLHIsOCxuKTtyKz1jfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyIT09ZS5sZW5ndGgpe3dhcm4oIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPTI1NSplW3RdO2lbYV09aVthKzFdPWlbYSsyXT1yfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2NvbnN0IHQ9byplW2crK107YVtjKytdPXQ7YVtjKytdPXQ7YVtjKytdPXQ7Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LGksYSl7aVthXT0yNTUqZVt0XTtpW2ErMV09MjU1KmVbdCsxXTtpW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7aWYoOD09PXMmJjA9PT1uKXthLnNldChlLnN1YmFycmF5KHQsdCszKmkpLHIpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107YVtjKytdPW8qZVtnKytdO2MrPW59fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfWZpbGxSZ2IoZSx0LGksYSxyLHMsbixvLGcpe2khPT1yfHx0IT09YT9mdW5jdGlvbiByZXNpemVSZ2JhSW1hZ2UoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz1pL3IsZz1hL3M7bGV0IGM9MDtjb25zdCBsPW5ldyBVaW50MTZBcnJheShyKTtpZigxPT09bil7Zm9yKGxldCBlPTA7ZTxyO2UrKylsW2VdPU1hdGguZmxvb3IoZSpvKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksbj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLGg9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCB0PWEuc3ViYXJyYXkoTWF0aC5mbG9vcihlKmcpKmkpO2ZvcihsZXQgZT0wO2U8cjtlKyspbltjKytdfD10W2xbZV1dJmh9fWVsc2V7Y29uc3QgYT00LG49aSphO2ZvcihsZXQgZT0wO2U8cjtlKyspbFtlXT1NYXRoLmZsb29yKGUqbykqYTtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBhPWUuc3ViYXJyYXkoTWF0aC5mbG9vcihpKmcpKm4pO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IGk9bFtlXTt0W2MrK109YVtpXTt0W2MrK109YVtpKzFdO3RbYysrXT1hW2krMl19fX19KG8sZSx0LGksYSxyLGcpOmZ1bmN0aW9uIGNvcHlSZ2JhSW1hZ2UoZSx0LGkpe2lmKDE9PT1pKXtjb25zdCBpPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksYT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLHI9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspYVtlXXw9aVtlXSZyfWVsc2V7bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz00KXt0W2krK109ZVthXTt0W2krK109ZVthKzFdO3RbaSsrXT1lW2ErMl19fX0obyxlLGcpfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNsKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jQyhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jbChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLGw9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKmwsQz10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqbCxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypsLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09QztFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNDKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jQyhwWzFdKTtpW2ErMl09MjU1KnRoaXMuI0MocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLGw9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxDPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihsKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypDKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqQysuMDMzMypRO2Q9LjA3MipoKy0uMjI5KkMrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqQystLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpDKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KkMrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDM5NDkpO2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGk9MDtmb3IobGV0IGE9MDthPD10O2ErKylpPWk8PDh8ZVthXTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj1pO3I+PTA7ci0tKXthKz1lW3JdK3Rbcl07ZVtyXT0yNTUmYTthPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGk9MTtmb3IobGV0IGE9dDthPj0wJiZpPjA7YS0tKXtpKz1lW2FdO2VbYV09MjU1Jmk7aT4+PTh9fWNvbnN0IER0PTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnBvcz0wO3RoaXMuZW5kPWUubGVuZ3RoO3RoaXMudG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KX1yZWFkQnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5idWZmZXJbdGhpcy5wb3MrK119cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBpPXRoaXMucmVhZEJ5dGUoKTtpZihpPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmaSk7dD10PDw3fDEyNyZpfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgaTtjb25zdCBhPXRoaXMudG1wQnVmO2xldCByPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtpPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghaSk7bGV0IHM9dCxuPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7bnw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmbjtzLS07bj4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGk9MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFeaX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGkpe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnIpO2xldCBzPW51bGw7Y29uc3Qgbj1uZXcgVWludDhBcnJheShEdCksbz1uZXcgVWludDhBcnJheShEdCksZz1uZXcgVWludDhBcnJheShEdCksYz1uZXcgVWludDhBcnJheShEdCksbD1uZXcgVWludDhBcnJheShEdCk7bGV0IGgsQztmb3IoOyhDPWEucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPUM+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZDKXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnM9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgaT0hISgxNiZDKSxyPTE1JkM7aWYocisxPkR0KXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IFE9MSxFPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgobixyKTthLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGcscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChnLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChnLHIpO2lmKCFpKXthLnJlYWRIZXhOdW1iZXIobCxyKTthZGRIZXgoZyxsLHIpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2lmKGkpbi5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpfWEucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGcsUSk7YS5yZWFkSGV4KGMscik7dC5tYXBPbmUoaGV4VG9JbnQoZyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxRKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKGwsUSk7YWRkSGV4KGcsbCxRKX1pbmNIZXgoYyxyKTthLnJlYWRIZXhTaWduZWQobCxyKTthZGRIZXgoYyxsLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChuLFEpO2EucmVhZEhleE51bWJlcihvLFEpO2FkZEhleChvLG4sUSk7YS5yZWFkSGV4KGMscik7dC5tYXBCZlJhbmdlKGhleFRvSW50KG4sUSksaGV4VG9JbnQobyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxRKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4sUSk7YWRkSGV4KG4sbyxRKX1hLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9pKHMpOnR9fWNvbnN0IEZ0PW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9RnQ7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGk9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtpPGU7KWkqPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGk9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoaStlKTthPWkrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoaSxhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0PW51bGwpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3QgaT1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UoaSx0KX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgaT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9aSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxpKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKTtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscjtpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHI9MDtyPDQ7KytyKWFbaStyXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3Iocj0xO3I8NTsrK3Ipe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7c1tyXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrci0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9ci0xO2lmKHI8NSl7Zm9yKDtyPDU7KytyKXNbcl09MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHI9MDtyPDU7KytyKW49ODUqbisoc1tyXS0zMyk7Zm9yKHI9MztyPj0wOy0tcil7YVtpK3JdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYocjwwKXI9ZTtlbHNle2lbYSsrXT1yPDw0fGU7cj0tMX19aWYocj49MCYmdGhpcy5lb2Ype2lbYSsrXT1yPDw0O3I9LTF9dGhpcy5maXJzdERpZ2l0PXI7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgU3Q9LTEsa3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sUnQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxOdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sR3Q9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTXQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sVXQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHIscyxuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcyxvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChzKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxyKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpzPW89MDtpZihyKXtkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecik7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBTdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPTA7aWYocilkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3JePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7cyE9PVN0JiYxIT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHM9PT1TdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cz10aGlzLl9sb29rQml0cygxMik7MSE9PXMmJmluZm8oImJhZCBydGMgY29kZTogIitzKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtzPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihzPT09U3Qpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHM+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZzKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtzPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnMpe288PD1zOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcyk7dGhpcy5vdXRwdXRCaXRzLT1zO3M9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3MtPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocz4wKXtvPDw9cztzPTB9fX13aGlsZShzKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcj1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09U3QpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFyfHxlPj1yKXtjb25zdCB0PWlbZS1yXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9a3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxrdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIFN0fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09U3QpcmV0dXJuIDE7ZT10Pj41P050W3Q+PjNdOlJ0W3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxOdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsUnQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PVN0KXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P010WyhlPj4xKS02NF06VXRbZT4+N106R3RbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LFV0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLE10LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxHdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP1N0OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgeHQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxMdD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxIdD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEp0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSx2dD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBpPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBpPy5zdWJhcnJheSgwLGUpfHx0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt0aGlzLnN0ci5yZXNldCgpO2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6dCx3cml0YWJsZTppfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLGE9aS5nZXRXcml0ZXIoKTthd2FpdCBhLnJlYWR5O2Eud3JpdGUoZSkudGhlbigoYXN5bmMoKT0+e2F3YWl0IGEucmVhZHk7YXdhaXQgYS5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCByPVtdO2xldCBzPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2YgdCl7ci5wdXNoKGUpO3MrPWUuYnl0ZUxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcil7bi5zZXQoZSxvKTtvKz1lLmJ5dGVMZW5ndGh9cmV0dXJuIG59Y2F0Y2h7dGhpcy5zdHI9bmV3IFN0cmVhbShlLDIsZS5sZW5ndGgsdGhpcy5zdHIuZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfX1nZXQgaXNBc3luYygpe3JldHVybiEwfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgaSxhPXRoaXMuY29kZVNpemUscj10aGlzLmNvZGVCdWY7Zm9yKDthPGU7KXtpZigtMT09PShpPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtyfD1pPDxhO2ErPTh9aT1yJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1yPj5lO3RoaXMuY29kZVNpemU9YS09ZTtyZXR1cm4gaX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsaT1lWzBdLGE9ZVsxXTtsZXQgcixzPXRoaXMuY29kZVNpemUsbj10aGlzLmNvZGVCdWY7Zm9yKDtzPGEmJi0xIT09KHI9dC5nZXRCeXRlKCkpOyl7bnw9cjw8cztzKz04fWNvbnN0IG89aVtuJigxPDxhKS0xXSxnPW8+PjE2LGM9NjU1MzUmbztpZihnPDF8fHM8Zyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9bj4+Zzt0aGlzLmNvZGVTaXplPXMtZztyZXR1cm4gY31nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpLGE9MDtmb3IoaT0wO2k8dDsrK2kpZVtpXT5hJiYoYT1lW2ldKTtjb25zdCByPTE8PGEscz1uZXcgSW50MzJBcnJheShyKTtmb3IobGV0IG49MSxvPTAsZz0yO248PWE7KytuLG88PD0xLGc8PD0xKWZvcihsZXQgYT0wO2E8dDsrK2EpaWYoZVthXT09PW4pe2xldCBlPTAsdD1vO2ZvcihpPTA7aTxuOysraSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoaT1lO2k8cjtpKz1nKXNbaV09bjw8MTZ8YTsrK299cmV0dXJuW3MsYV19I20oZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LGk7Y29uc3QgYT10aGlzLnN0cjt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jbShlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1pfD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1yfD10PDw4O2lmKHIhPT0oNjU1MzUmfmkpJiYoMCE9PWl8fDAhPT1yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLG49cytpO2U9dGhpcy5lbnN1cmVCdWZmZXIobik7dGhpcy5idWZmZXJMZW5ndGg9bjtpZigwPT09aSktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhpKTtlLnNldCh0LHMpO3QubGVuZ3RoPGkmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCByLHM7aWYoMT09PXQpe3I9SnQ7cz12dH1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxhPXRoaXMuZ2V0Qml0cyg0KSs0LG49bmV3IFVpbnQ4QXJyYXkoeHQubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288YTsrK28pblt4dFtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGc9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShuKTtpPTA7bz0wO2NvbnN0IGM9ZSt0LGw9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsQyxRO2Zvcig7bzxjOyl7Y29uc3QgZT10aGlzLmdldENvZGUoZyk7aWYoMTY9PT1lKXtoPTI7Qz0zO1E9aX1lbHNlIGlmKDE3PT09ZSl7aD0zO0M9MztRPWk9MH1lbHNle2lmKDE4IT09ZSl7bFtvKytdPWk9ZTtjb250aW51ZX1oPTc7Qz0xMTtRPWk9MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrQztmb3IoO3QtLSA+MDspbFtvKytdPVF9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoMCxlKSk7cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoZSxjKSl9fWU9dGhpcy5idWZmZXI7bGV0IG49ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocik7aWYodDwyNTYpe2lmKG8rMT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO249ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9THRbdF07bGV0IGE9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2k9KDY1NTM1JnQpK2E7dD10aGlzLmdldENvZGUocyk7dD1IdFt0XTthPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBnPSg2NTUzNSZ0KSthO2lmKG8raT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2kpO249ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxpOysrdCwrK28pZVtvXT1lW28tZ119fX1jb25zdCBZdD1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTtjbGFzcyBBcml0aG1ldGljRGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5icD10O3RoaXMuZGF0YUVuZD1pO3RoaXMuY2hpZ2g9ZVt0XTt0aGlzLmNsb3c9MDt0aGlzLmJ5dGVJbigpO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8NyY2NTUzNXx0aGlzLmNsb3c+PjkmMTI3O3RoaXMuY2xvdz10aGlzLmNsb3c8PDcmNjU1MzU7dGhpcy5jdC09Nzt0aGlzLmE9MzI3Njh9Ynl0ZUluKCl7Y29uc3QgZT10aGlzLmRhdGE7bGV0IHQ9dGhpcy5icDtpZigyNTU9PT1lW3RdKWlmKGVbdCsxXT4xNDMpe3RoaXMuY2xvdys9NjUyODA7dGhpcy5jdD04fWVsc2V7dCsrO3RoaXMuY2xvdys9ZVt0XTw8OTt0aGlzLmN0PTc7dGhpcy5icD10fWVsc2V7dCsrO3RoaXMuY2xvdys9dDx0aGlzLmRhdGFFbmQ/ZVt0XTw8ODo2NTI4MDt0aGlzLmN0PTg7dGhpcy5icD10fWlmKHRoaXMuY2xvdz42NTUzNSl7dGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNjt0aGlzLmNsb3cmPTY1NTM1fX1yZWFkQml0KGUsdCl7bGV0IGk9ZVt0XT4+MSxhPTEmZVt0XTtjb25zdCByPVl0W2ldLHM9ci5xZTtsZXQgbixvPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihvPHMpe289cztuPWE7aT1yLm5tcHN9ZWxzZXtvPXM7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDMyNzY4Jm8pe3RoaXMuYT1vO3JldHVybiBhfWlmKG88cyl7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXtuPWE7aT1yLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoISgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKHQpO2xldCByPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IHM9MDtzPGU7cysrKXtjb25zdCBlPWkucmVhZEJpdChhLHIpO3I9cjwyNTY/cjw8MXxlOjUxMSYocjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IHM9cmVhZEJpdHMoMSksbj1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7bGV0IG87MD09PXM/bz1uOm4+MCYmKG89LW4pO3JldHVybiBvPj0tMjE0NzQ4MzY0OCYmbzw9eXQ/bzpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGkpe2NvbnN0IGE9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCByPTE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cj1yPDwxfHQucmVhZEJpdChhLHIpfXJldHVybiBpPDMxP3ImKDE8PGkpLTE6MjE0NzQ4MzY0NyZyfWNvbnN0IEt0PVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0sVHQ9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHF0PVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sT3Q9WzM5NzE3LDE5NDEsMjI5LDQwNV0sUHQ9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsaSxhLHIscyxuLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxpLCExKX1pZigwPT09YSYmIXMmJiFyJiY0PT09bi5sZW5ndGgmJjM9PT1uWzBdLngmJi0xPT09blswXS55JiYtMz09PW5bMV0ueCYmLTE9PT1uWzFdLnkmJjI9PT1uWzJdLngmJi0yPT09blsyXS55JiYtMj09PW5bM10ueCYmLTI9PT1uWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsaSl7Y29uc3QgYT1pLmRlY29kZXIscj1pLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxzPVtdO2xldCBuLG8sZyxjLGwsaCxDO2ZvcihvPTA7bzx0O28rKyl7bD1zW29dPW5ldyBVaW50OEFycmF5KGUpO2g9bzwxP2w6c1tvLTFdO0M9bzwyP2w6c1tvLTJdO249Q1swXTw8MTN8Q1sxXTw8MTJ8Q1syXTw8MTF8aFswXTw8N3xoWzFdPDw2fGhbMl08PDV8aFszXTw8NDtmb3IoZz0wO2c8ZTtnKyspe2xbZ109Yz1hLnJlYWRCaXQocixuKTtuPSgzMTczNSZuKTw8MXwoZyszPGU/Q1tnKzNdPDwxMTowKXwoZys0PGU/aFtnKzRdPDw0OjApfGN9fXJldHVybiBzfSh0LGksbyk7Y29uc3QgZz0hIXMsYz1UdFthXS5jb25jYXQobik7Yy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnktdC55fHxlLngtdC54fSkpO2NvbnN0IGw9Yy5sZW5ndGgsaD1uZXcgSW50OEFycmF5KGwpLEM9bmV3IEludDhBcnJheShsKSxRPVtdO2xldCBFLHUsZD0wLGY9MCxwPTAsbT0wO2Zvcih1PTA7dTxsO3UrKyl7aFt1XT1jW3VdLng7Q1t1XT1jW3VdLnk7Zj1NYXRoLm1pbihmLGNbdV0ueCk7cD1NYXRoLm1heChwLGNbdV0ueCk7bT1NYXRoLm1pbihtLGNbdV0ueSk7dTxsLTEmJmNbdV0ueT09PWNbdSsxXS55JiZjW3VdLng9PT1jW3UrMV0ueC0xP2R8PTE8PGwtMS11OlEucHVzaCh1KX1jb25zdCB5PVEubGVuZ3RoLHc9bmV3IEludDhBcnJheSh5KSxiPW5ldyBJbnQ4QXJyYXkoeSksRD1uZXcgVWludDE2QXJyYXkoeSk7Zm9yKEU9MDtFPHk7RSsrKXt1PVFbRV07d1tFXT1jW3VdLng7YltFXT1jW3VdLnk7RFtFXT0xPDxsLTEtdX1jb25zdCBTPS1mLGs9LW0sUj10LXAsTj1PdFthXTtsZXQgRz1uZXcgVWludDhBcnJheSh0KTtjb25zdCBNPVtdLFU9by5kZWNvZGVyLHg9by5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIik7bGV0IEwsSCxKLHYsWSxLPTAsVD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspe2lmKHIpe0tePVUucmVhZEJpdCh4LE4pO2lmKEspe00ucHVzaChHKTtjb250aW51ZX19Rz1uZXcgVWludDhBcnJheShHKTtNLnB1c2goRyk7Zm9yKEw9MDtMPHQ7TCsrKXtpZihnJiZzW2VdW0xdKXtHW0xdPTA7Y29udGludWV9aWYoTD49UyYmTDxSJiZlPj1rKXtUPVQ8PDEmZDtmb3IodT0wO3U8eTt1Kyspe0g9ZStiW3VdO0o9TCt3W3VdO3Y9TVtIXVtKXTtpZih2KXt2PURbdV07VHw9dn19fWVsc2V7VD0wO1k9bC0xO2Zvcih1PTA7dTxsO3UrKyxZLS0pe0o9TCtoW3VdO2lmKEo+PTAmJko8dCl7SD1lK0NbdV07aWYoSD49MCl7dj1NW0hdW0pdO3YmJihUfD12PDxZKX19fX1jb25zdCBpPVUucmVhZEJpdCh4LFQpO0dbTF09aX19cmV0dXJuIE19ZnVuY3Rpb24gZGVjb2RlUmVmaW5lbWVudChlLHQsaSxhLHIscyxuLG8sZyl7bGV0IGM9cXRbaV0uY29kaW5nOzA9PT1pJiYoYz1jLmNvbmNhdChbb1swXV0pKTtjb25zdCBsPWMubGVuZ3RoLGg9bmV3IEludDMyQXJyYXkobCksQz1uZXcgSW50MzJBcnJheShsKTtsZXQgUTtmb3IoUT0wO1E8bDtRKyspe2hbUV09Y1tRXS54O0NbUV09Y1tRXS55fWxldCBFPXF0W2ldLnJlZmVyZW5jZTswPT09aSYmKEU9RS5jb25jYXQoW29bMV1dKSk7Y29uc3QgdT1FLmxlbmd0aCxkPW5ldyBJbnQzMkFycmF5KHUpLGY9bmV3IEludDMyQXJyYXkodSk7Zm9yKFE9MDtRPHU7USsrKXtkW1FdPUVbUV0ueDtmW1FdPUVbUV0ueX1jb25zdCBwPWFbMF0ubGVuZ3RoLG09YS5sZW5ndGgseT1QdFtpXSx3PVtdLGI9Zy5kZWNvZGVyLEQ9Zy5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdSIik7bGV0IFM9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtpZihuKXtTXj1iLnJlYWRCaXQoRCx5KTtpZihTKXRocm93IG5ldyBKYmlnMkVycm9yKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKX1jb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3cucHVzaCh0KTtmb3IobGV0IG49MDtuPGU7bisrKXtsZXQgbyxnLGM9MDtmb3IoUT0wO1E8bDtRKyspe289aStDW1FdO2c9bitoW1FdO288MHx8ZzwwfHxnPj1lP2M8PD0xOmM9Yzw8MXx3W29dW2ddfWZvcihRPTA7UTx1O1ErKyl7bz1pK2ZbUV0tcztnPW4rZFtRXS1yO288MHx8bz49bXx8ZzwwfHxnPj1wP2M8PD0xOmM9Yzw8MXxhW29dW2ddfWNvbnN0IEU9Yi5yZWFkQml0KEQsYyk7dFtuXT1FfX1yZXR1cm4gd31mdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoLEMsUSxFLHUsZCxmLHApe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBtPVtdO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXt3PW5ldyBVaW50OEFycmF5KGkpO2lmKHIpZm9yKGxldCBlPTA7ZTxpO2UrKyl3W2VdPXI7bS5wdXNoKHcpfWNvbnN0IGI9ZC5kZWNvZGVyLEQ9ZC5jb250ZXh0Q2FjaGU7bGV0IFM9ZT8tUS50YWJsZURlbHRhVC5kZWNvZGUocCk6LWRlY29kZUludGVnZXIoRCwiSUFEVCIsYiksaz0wO3k9MDtmb3IoO3k8czspe1MrPWU/US50YWJsZURlbHRhVC5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQURUIixiKTtrKz1lP1EudGFibGVGaXJzdFMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFGUyIsYik7bGV0IGE9aztmb3IoOzspe2xldCByPTA7bj4xJiYocj1lP3AucmVhZEJpdHMoZik6ZGVjb2RlSW50ZWdlcihELCJJQUlUIixiKSk7Y29uc3Qgcz1uKlMrcixrPWU/US5zeW1ib2xJRFRhYmxlLmRlY29kZShwKTpkZWNvZGVJQUlEKEQsYixnKSxSPXQmJihlP3AucmVhZEJpdCgpOmRlY29kZUludGVnZXIoRCwiSUFSSSIsYikpO2xldCBOPW9ba10sRz1OWzBdLmxlbmd0aCxNPU4ubGVuZ3RoO2lmKFIpe2NvbnN0IGU9ZGVjb2RlSW50ZWdlcihELCJJQVJEVyIsYiksdD1kZWNvZGVJbnRlZ2VyKEQsIklBUkRIIixiKTtHKz1lO00rPXQ7Tj1kZWNvZGVSZWZpbmVtZW50KEcsTSxFLE4sKGU+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFgiLGIpLCh0Pj4xKStkZWNvZGVJbnRlZ2VyKEQsIklBUkRZIixiKSwhMSx1LGQpfWxldCBVPTA7Yz8xJmg/VT1NLTE6YSs9TS0xOmg+MT9hKz1HLTE6VT1HLTE7Y29uc3QgeD1zLSgxJmg/MDpNLTEpLEw9YS0oMiZoP0ctMTowKTtsZXQgSCxKLHY7aWYoYylmb3IoSD0wO0g8TTtIKyspe3c9bVtMK0hdO2lmKCF3KWNvbnRpbnVlO3Y9TltIXTtjb25zdCBlPU1hdGgubWluKGkteCxHKTtzd2l0Y2goQyl7Y2FzZSAwOmZvcihKPTA7SjxlO0orKyl3W3grSl18PXZbSl07YnJlYWs7Y2FzZSAyOmZvcihKPTA7SjxlO0orKyl3W3grSl1ePXZbSl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtDfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWVsc2UgZm9yKEo9MDtKPE07SisrKXt3PW1beCtKXTtpZih3KXt2PU5bSl07c3dpdGNoKEMpe2Nhc2UgMDpmb3IoSD0wO0g8RztIKyspd1tMK0hdfD12W0hdO2JyZWFrO2Nhc2UgMjpmb3IoSD0wO0g8RztIKyspd1tMK0hdXj12W0hdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7Q30gaXMgbm90IHN1cHBvcnRlZGApfX19eSsrO2NvbnN0IFk9ZT9RLnRhYmxlRGVsdGFTLmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFMiLGIpO2lmKG51bGw9PT1ZKWJyZWFrO2ErPVUrWStsfX1yZXR1cm4gbX1mdW5jdGlvbiByZWFkU2VnbWVudEhlYWRlcihlLHQpe2NvbnN0IGk9e307aS5udW1iZXI9cmVhZFVpbnQzMihlLHQpO2NvbnN0IGE9ZVt0KzRdLHI9NjMmYTtpZighS3Rbcl0pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK3IpO2kudHlwZT1yO2kudHlwZU5hbWU9S3Rbcl07aS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmYSk7Y29uc3Qgcz0hISg2NCZhKSxuPWVbdCs1XTtsZXQgbz1uPj41Jjc7Y29uc3QgZz1bMzEmbl07bGV0IGM9dCs2O2lmKDc9PT1uKXtvPTUzNjg3MDkxMSZyZWFkVWludDMyKGUsYy0xKTtjKz0zO2xldCB0PW8rNz4+MztnWzBdPWVbYysrXTtmb3IoOy0tdD4wOylnLnB1c2goZVtjKytdKX1lbHNlIGlmKDU9PT1ufHw2PT09bil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2kucmV0YWluQml0cz1nO2xldCBsPTQ7aS5udW1iZXI8PTI1Nj9sPTE6aS5udW1iZXI8PTY1NTM2JiYobD0yKTtjb25zdCBoPVtdO2xldCBDLFE7Zm9yKEM9MDtDPG87QysrKXtsZXQgdDt0PTE9PT1sP2VbY106Mj09PWw/cmVhZFVpbnQxNihlLGMpOnJlYWRVaW50MzIoZSxjKTtoLnB1c2godCk7Yys9bH1pLnJlZmVycmVkVG89aDtpZihzKXtpLnBhZ2VBc3NvY2lhdGlvbj1yZWFkVWludDMyKGUsYyk7Yys9NH1lbHNlIGkucGFnZUFzc29jaWF0aW9uPWVbYysrXTtpLmxlbmd0aD1yZWFkVWludDMyKGUsYyk7Yys9NDtpZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpe2lmKDM4IT09cil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLGMpLGE9ISEoMSZlW2MrV3RdKSxyPTYscz1uZXcgVWludDhBcnJheShyKTtpZighYSl7c1swXT0yNTU7c1sxXT0xNzJ9c1syXT10LmhlaWdodD4+PjI0JjI1NTtzWzNdPXQuaGVpZ2h0Pj4xNiYyNTU7c1s0XT10LmhlaWdodD4+OCYyNTU7c1s1XT0yNTUmdC5oZWlnaHQ7Zm9yKEM9YyxRPWUubGVuZ3RoO0M8UTtDKyspe2xldCB0PTA7Zm9yKDt0PHImJnNbdF09PT1lW0MrdF07KXQrKztpZih0PT09cil7aS5sZW5ndGg9QytyO2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX19aS5oZWFkZXJFbmQ9YztyZXR1cm4gaX1mdW5jdGlvbiByZWFkU2VnbWVudHMoZSx0LGksYSl7Y29uc3Qgcj1bXTtsZXQgcz1pO2Zvcig7czxhOyl7Y29uc3QgaT1yZWFkU2VnbWVudEhlYWRlcih0LHMpO3M9aS5oZWFkZXJFbmQ7Y29uc3QgYT17aGVhZGVyOmksZGF0YTp0fTtpZighZS5yYW5kb21BY2Nlc3Mpe2Euc3RhcnQ9cztzKz1pLmxlbmd0aDthLmVuZD1zfXIucHVzaChhKTtpZig1MT09PWkudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3JbZV0uc3RhcnQ9cztzKz1yW2VdLmhlYWRlci5sZW5ndGg7cltlXS5lbmQ9c31yZXR1cm4gcn1mdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdCl7cmV0dXJue3dpZHRoOnJlYWRVaW50MzIoZSx0KSxoZWlnaHQ6cmVhZFVpbnQzMihlLHQrNCkseDpyZWFkVWludDMyKGUsdCs4KSx5OnJlYWRVaW50MzIoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19Y29uc3QgV3Q9MTc7ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoZSx0KXtjb25zdCBpPWUuaGVhZGVyLGE9ZS5kYXRhLHI9ZS5lbmQ7bGV0IHMsbixvLGcsYz1lLnN0YXJ0O3N3aXRjaChpLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9cmVhZFVpbnQxNihhLGMpO2UuaHVmZm1hbj0hISgxJnQpO2UucmVmaW5lbWVudD0hISgyJnQpO2UuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzO2UuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzO2UuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMTtlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxO2UuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpO2UuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KTtlLnRlbXBsYXRlPXQ+PjEwJjM7ZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMTtjKz0yO2lmKCFlLmh1ZmZtYW4pe2c9MD09PWUudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5hdD1ufWlmKGUucmVmaW5lbWVudCYmIWUucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWUucmVmaW5lbWVudEF0PW59ZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtlLm51bWJlck9mTmV3U3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtlLGkubnVtYmVyLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSA2OmNhc2UgNzpjb25zdCBsPXt9O2wuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9V3Q7Y29uc3QgaD1yZWFkVWludDE2KGEsYyk7Yys9MjtsLmh1ZmZtYW49ISEoMSZoKTtsLnJlZmluZW1lbnQ9ISEoMiZoKTtsLmxvZ1N0cmlwU2l6ZT1oPj4yJjM7bC5zdHJpcFNpemU9MTw8bC5sb2dTdHJpcFNpemU7bC5yZWZlcmVuY2VDb3JuZXI9aD4+NCYzO2wudHJhbnNwb3NlZD0hISg2NCZoKTtsLmNvbWJpbmF0aW9uT3BlcmF0b3I9aD4+NyYzO2wuZGVmYXVsdFBpeGVsVmFsdWU9aD4+OSYxO2wuZHNPZmZzZXQ9aDw8MTc+PjI3O2wucmVmaW5lbWVudFRlbXBsYXRlPWg+PjE1JjE7aWYobC5odWZmbWFuKXtjb25zdCBlPXJlYWRVaW50MTYoYSxjKTtjKz0yO2wuaHVmZm1hbkZTPTMmZTtsLmh1ZmZtYW5EUz1lPj4yJjM7bC5odWZmbWFuRFQ9ZT4+NCYzO2wuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7bC5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMztsLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKGwucmVmaW5lbWVudCYmIWwucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWwucmVmaW5lbWVudEF0PW59bC5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtsLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSAxNjpjb25zdCBDPXt9LFE9YVtjKytdO0MubW1yPSEhKDEmUSk7Qy50ZW1wbGF0ZT1RPj4xJjM7Qy5wYXR0ZXJuV2lkdGg9YVtjKytdO0MucGF0dGVybkhlaWdodD1hW2MrK107Qy5tYXhQYXR0ZXJuSW5kZXg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bQyxpLm51bWJlcixhLGMscl07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IEU9e307RS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz1XdDtjb25zdCB1PWFbYysrXTtFLm1tcj0hISgxJnUpO0UudGVtcGxhdGU9dT4+MSYzO0UuZW5hYmxlU2tpcD0hISg4JnUpO0UuY29tYmluYXRpb25PcGVyYXRvcj11Pj40Jjc7RS5kZWZhdWx0UGl4ZWxWYWx1ZT11Pj43JjE7RS5ncmlkV2lkdGg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkSGVpZ2h0PXJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFg9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRPZmZzZXRZPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkVmVjdG9yWD1yZWFkVWludDE2KGEsYyk7Yys9MjtFLmdyaWRWZWN0b3JZPXJlYWRVaW50MTYoYSxjKTtjKz0yO3M9W0UsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDM4OmNhc2UgMzk6Y29uc3QgZD17fTtkLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPVd0O2NvbnN0IGY9YVtjKytdO2QubW1yPSEhKDEmZik7ZC50ZW1wbGF0ZT1mPj4xJjM7ZC5wcmVkaWN0aW9uPSEhKDgmZik7aWYoIWQubW1yKXtnPTA9PT1kLnRlbXBsYXRlPzQ6MTtuPVtdO2ZvcihvPTA7bzxnO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWQuYXQ9bn1zPVtkLGEsYyxyXTticmVhaztjYXNlIDQ4OmNvbnN0IHA9e3dpZHRoOnJlYWRVaW50MzIoYSxjKSxoZWlnaHQ6cmVhZFVpbnQzMihhLGMrNCkscmVzb2x1dGlvblg6cmVhZFVpbnQzMihhLGMrOCkscmVzb2x1dGlvblk6cmVhZFVpbnQzMihhLGMrMTIpfTs0Mjk0OTY3Mjk1PT09cC5oZWlnaHQmJmRlbGV0ZSBwLmhlaWdodDtjb25zdCBtPWFbYysxNl07cmVhZFVpbnQxNihhLGMrMTcpO3AubG9zc2xlc3M9ISEoMSZtKTtwLnJlZmluZW1lbnQ9ISEoMiZtKTtwLmRlZmF1bHRQaXhlbFZhbHVlPW0+PjImMTtwLmNvbWJpbmF0aW9uT3BlcmF0b3I9bT4+MyYzO3AucmVxdWlyZXNCdWZmZXI9ISEoMzImbSk7cC5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmbSk7cz1bcF07YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnM9W2kubnVtYmVyLGEsYyxyXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzZWdtZW50IHR5cGUgJHtpLnR5cGVOYW1lfSgke2kudHlwZX0pIGlzIG5vdCBpbXBsZW1lbnRlZGApfWNvbnN0IGw9Im9uIitpLnR5cGVOYW1lO2wgaW4gdCYmdFtsXS5hcHBseSh0LHMpfWZ1bmN0aW9uIHByb2Nlc3NTZWdtZW50cyhlLHQpe2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylwcm9jZXNzU2VnbWVudChlW2ldLHQpfWNsYXNzIFNpbXBsZVNlZ21lbnRWaXNpdG9ye29uUGFnZUluZm9ybWF0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7Y29uc3QgdD1lLndpZHRoKzc+PjMsaT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCplLmhlaWdodCk7ZS5kZWZhdWx0UGl4ZWxWYWx1ZSYmaS5maWxsKDI1NSk7dGhpcy5idWZmZXI9aX1kcmF3Qml0bWFwKGUsdCl7Y29uc3QgaT10aGlzLmN1cnJlbnRQYWdlSW5mbyxhPWUud2lkdGgscj1lLmhlaWdodCxzPWkud2lkdGgrNz4+MyxuPWkuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlP2UuY29tYmluYXRpb25PcGVyYXRvcjppLmNvbWJpbmF0aW9uT3BlcmF0b3Isbz10aGlzLmJ1ZmZlcixnPTEyOD4+KDcmZS54KTtsZXQgYyxsLGgsQyxRPWUueSpzKyhlLng+PjMpO3N3aXRjaChuKXtjYXNlIDA6Zm9yKGM9MDtjPHI7YysrKXtoPWc7Qz1RO2ZvcihsPTA7bDxhO2wrKyl7dFtjXVtsXSYmKG9bQ118PWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtDKyt9fVErPXN9YnJlYWs7Y2FzZSAyOmZvcihjPTA7YzxyO2MrKyl7aD1nO0M9UTtmb3IobD0wO2w8YTtsKyspe3RbY11bbF0mJihvW0NdXj1oKTtoPj49MTtpZighaCl7aD0xMjg7QysrfX1RKz1zfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7bn0gaXMgbm90IHN1cHBvcnRlZGApfX1vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oZSx0LGksYSl7Y29uc3Qgcj1lLmluZm8scz1uZXcgRGVjb2RpbmdDb250ZXh0KHQsaSxhKSxuPWRlY29kZUJpdG1hcChlLm1tcixyLndpZHRoLHIuaGVpZ2h0LGUudGVtcGxhdGUsZS5wcmVkaWN0aW9uLG51bGwsZS5hdCxzKTt0aGlzLmRyYXdCaXRtYXAocixuKX1vbkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25TeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtsZXQgbixvO2lmKGUuaHVmZm1hbil7bj1mdW5jdGlvbiBnZXRTeW1ib2xEaWN0aW9uYXJ5SHVmZm1hblRhYmxlcyhlLHQsaSl7bGV0IGEscixzLG4sbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmE9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzphPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOnI9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzpyPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVyBzZWxlY3RvciIpfWlmKGUuYml0bWFwU2l6ZVNlbGVjdG9yKXtzPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrfWVsc2Ugcz1nZXRTdGFuZGFyZFRhYmxlKDEpO249ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP2dldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk6Z2V0U3RhbmRhcmRUYWJsZSgxKTtyZXR1cm57dGFibGVEZWx0YUhlaWdodDphLHRhYmxlRGVsdGFXaWR0aDpyLHRhYmxlQml0bWFwU2l6ZTpzLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOm59fShlLGksdGhpcy5jdXN0b21UYWJsZXMpO289bmV3IFJlYWRlcihhLHIscyl9bGV0IGc9dGhpcy5zeW1ib2xzO2d8fCh0aGlzLnN5bWJvbHM9Zz17fSk7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bmV3IERlY29kaW5nQ29udGV4dChhLHIscyk7Z1t0XT1mdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IEM9W107bGV0IFE9MCxFPWxvZzIoaS5sZW5ndGgrYSk7Y29uc3QgdT1sLmRlY29kZXIsZD1sLmNvbnRleHRDYWNoZTtsZXQgZixwO2lmKGUpe2Y9Z2V0U3RhbmRhcmRUYWJsZSgxKTtwPVtdO0U9TWF0aC5tYXgoRSwxKX1mb3IoO0MubGVuZ3RoPGE7KXtRKz1lP3MudGFibGVEZWx0YUhlaWdodC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURIIix1KTtsZXQgYT0wLHI9MDtjb25zdCBmPWU/cC5sZW5ndGg6MDtmb3IoOzspe2NvbnN0IGY9ZT9zLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURXIix1KTtpZihudWxsPT09ZilicmVhazthKz1mO3IrPWE7bGV0IG07aWYodCl7Y29uc3Qgcj1kZWNvZGVJbnRlZ2VyKGQsIklBQUkiLHUpO2lmKHI+MSltPWRlY29kZVRleHRSZWdpb24oZSx0LGEsUSwwLHIsMSxpLmNvbmNhdChDKSxFLDAsMCwxLDAscyxnLGMsbCwwLGgpO2Vsc2V7Y29uc3QgZT1kZWNvZGVJQUlEKGQsdSxFKSx0PWRlY29kZUludGVnZXIoZCwiSUFSRFgiLHUpLHI9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWSIsdSk7bT1kZWNvZGVSZWZpbmVtZW50KGEsUSxnLGU8aS5sZW5ndGg/aVtlXTpDW2UtaS5sZW5ndGhdLHQsciwhMSxjLGwpfUMucHVzaChtKX1lbHNlIGlmKGUpcC5wdXNoKGEpO2Vsc2V7bT1kZWNvZGVCaXRtYXAoITEsYSxRLG4sITEsbnVsbCxvLGwpO0MucHVzaChtKX19aWYoZSYmIXQpe2NvbnN0IGU9cy50YWJsZUJpdG1hcFNpemUuZGVjb2RlKGgpO2guYnl0ZUFsaWduKCk7bGV0IHQ7aWYoMD09PWUpdD1yZWFkVW5jb21wcmVzc2VkQml0bWFwKGgscixRKTtlbHNle2NvbnN0IGk9aC5lbmQsYT1oLnBvc2l0aW9uK2U7aC5lbmQ9YTt0PWRlY29kZU1NUkJpdG1hcChoLHIsUSwhMSk7aC5lbmQ9aTtoLnBvc2l0aW9uPWF9Y29uc3QgaT1wLmxlbmd0aDtpZihmPT09aS0xKUMucHVzaCh0KTtlbHNle2xldCBlLGEscixzLG4sbz0wO2ZvcihlPWY7ZTxpO2UrKyl7cz1wW2VdO3I9bytzO249W107Zm9yKGE9MDthPFE7YSsrKW4ucHVzaCh0W2FdLnN1YmFycmF5KG8scikpO0MucHVzaChuKTtvPXJ9fX19Y29uc3QgbT1bXSx5PVtdO2xldCB3LGIsRD0hMTtjb25zdCBTPWkubGVuZ3RoK2E7Zm9yKDt5Lmxlbmd0aDxTOyl7bGV0IHQ9ZT9mLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRVgiLHUpO2Zvcig7dC0tOyl5LnB1c2goRCk7RD0hRH1mb3Iodz0wLGI9aS5sZW5ndGg7dzxiO3crKyl5W3ddJiZtLnB1c2goaVt3XSk7Zm9yKGxldCBlPTA7ZTxhO3crKyxlKyspeVt3XSYmbS5wdXNoKENbZV0pO3JldHVybiBtfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGMsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxuLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxsLG8pfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9ZS5pbmZvO2xldCBuLG87Y29uc3QgZz10aGlzLnN5bWJvbHMsYz1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bG9nMihjLmxlbmd0aCk7aWYoZS5odWZmbWFuKXtvPW5ldyBSZWFkZXIoaSxhLHIpO249ZnVuY3Rpb24gZ2V0VGV4dFJlZ2lvbkh1ZmZtYW5UYWJsZXMoZSx0LGksYSxyKXtjb25zdCBzPVtdO2ZvcihsZXQgZT0wO2U8PTM0O2UrKyl7Y29uc3QgdD1yLnJlYWRCaXRzKDQpO3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSl9Y29uc3Qgbj1uZXcgSHVmZm1hblRhYmxlKHMsITEpO3MubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTxhOyl7Y29uc3QgdD1uLmRlY29kZShyKTtpZih0Pj0zMil7bGV0IGksYSxuO3N3aXRjaCh0KXtjYXNlIDMyOmlmKDA9PT1lKXRocm93IG5ldyBKYmlnMkVycm9yKCJubyBwcmV2aW91cyB2YWx1ZSBpbiBzeW1ib2wgSUQgdGFibGUiKTthPXIucmVhZEJpdHMoMikrMztpPXNbZS0xXS5wcmVmaXhMZW5ndGg7YnJlYWs7Y2FzZSAzMzphPXIucmVhZEJpdHMoMykrMztpPTA7YnJlYWs7Y2FzZSAzNDphPXIucmVhZEJpdHMoNykrMTE7aT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgY29kZSBsZW5ndGggaW4gc3ltYm9sIElEIHRhYmxlIil9Zm9yKG49MDtuPGE7bisrKXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLGksMCwwXSkpO2UrK319ZWxzZXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpO2UrK319ci5ieXRlQWxpZ24oKTtjb25zdCBvPW5ldyBIdWZmbWFuVGFibGUocywhMSk7bGV0IGcsYyxsLGg9MDtzd2l0Y2goZS5odWZmbWFuRlMpe2Nhc2UgMDpjYXNlIDE6Zz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkZTKzYpO2JyZWFrO2Nhc2UgMzpnPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBGUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EUyl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Yz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRTKzgpO2JyZWFrO2Nhc2UgMzpjPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6bD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFQgc2VsZWN0b3IiKX1pZihlLnJlZmluZW1lbnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm57c3ltYm9sSURUYWJsZTpvLHRhYmxlRmlyc3RTOmcsdGFibGVEZWx0YVM6Yyx0YWJsZURlbHRhVDpsfX0oZSx0LHRoaXMuY3VzdG9tVGFibGVzLGMubGVuZ3RoLG8pfWNvbnN0IGg9bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksQz1kZWNvZGVUZXh0UmVnaW9uKGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsYyxsLGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixuLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsZS5sb2dTdHJpcFNpemUsbyk7dGhpcy5kcmF3Qml0bWFwKHMsQyl9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LGksYSxyKXtsZXQgcz10aGlzLnBhdHRlcm5zO3N8fCh0aGlzLnBhdHRlcm5zPXM9e30pO2NvbnN0IG49bmV3IERlY29kaW5nQ29udGV4dChpLGEscik7c1t0XT1mdW5jdGlvbiBkZWNvZGVQYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIscyl7Y29uc3Qgbj1bXTtpZighZSl7bi5wdXNoKHt4Oi10LHk6MH0pOzA9PT1yJiZuLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgbz1kZWNvZGVCaXRtYXAoZSwoYSsxKSp0LGksciwhMSxudWxsLG4scyksZz1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyl7Y29uc3QgYT1bXSxyPXQqZSxzPXIrdDtmb3IobGV0IGU9MDtlPGk7ZSsrKWEucHVzaChvW2VdLnN1YmFycmF5KHIscykpO2cucHVzaChhKX1yZXR1cm4gZ30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUsbil9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxuPWUuaW5mbyxvPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpLGc9ZnVuY3Rpb24gZGVjb2RlSGFsZnRvbmVSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxsLGgsQyxRLEUpe2lmKG4pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNraXAgaXMgbm90IHN1cHBvcnRlZCIpO2lmKDAhPT1vKXRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAiJHtvfSIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb25gKTtjb25zdCB1PVtdO2xldCBkLGYscDtmb3IoZD0wO2Q8cjtkKyspe3A9bmV3IFVpbnQ4QXJyYXkoYSk7aWYocylmb3IoZj0wO2Y8YTtmKyspcFtmXT1zO3UucHVzaChwKX1jb25zdCBtPXQubGVuZ3RoLHk9dFswXSx3PXlbMF0ubGVuZ3RoLGI9eS5sZW5ndGgsRD1sb2cyKG0pLFM9W107aWYoIWUpe1MucHVzaCh7eDppPD0xPzM6Mix5Oi0xfSk7MD09PWkmJlMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBrPVtdO2xldCBSLE4sRyxNLFUseCxMLEgsSix2LFk7ZSYmKFI9bmV3IFJlYWRlcihFLmRhdGEsRS5zdGFydCxFLmVuZCkpO2ZvcihkPUQtMTtkPj0wO2QtLSl7Tj1lP2RlY29kZU1NUkJpdG1hcChSLGcsYywhMCk6ZGVjb2RlQml0bWFwKCExLGcsYyxpLCExLG51bGwsUyxFKTtrW2RdPU59Zm9yKEc9MDtHPGM7RysrKWZvcihNPTA7TTxnO00rKyl7VT0wO3g9MDtmb3IoZj1ELTE7Zj49MDtmLS0pe1VePWtbZl1bR11bTV07eHw9VTw8Zn1MPXRbeF07SD1sK0cqUStNKkM+Pjg7Sj1oK0cqQy1NKlE+Pjg7aWYoSD49MCYmSCt3PD1hJiZKPj0wJiZKK2I8PXIpZm9yKGQ9MDtkPGI7ZCsrKXtZPXVbSitkXTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKVlbSCtmXXw9dltmXX1lbHNle2xldCBlLHQ7Zm9yKGQ9MDtkPGI7ZCsrKXt0PUorZDtpZighKHQ8MHx8dD49cikpe1k9dVt0XTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKXtlPUgrZjtlPj0wJiZlPGEmJihZW2VdfD12W2ZdKX19fX19cmV0dXJuIHV9KGUubW1yLHMsZS50ZW1wbGF0ZSxuLndpZHRoLG4uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5lbmFibGVTa2lwLGUuY29tYmluYXRpb25PcGVyYXRvcixlLmdyaWRXaWR0aCxlLmdyaWRIZWlnaHQsZS5ncmlkT2Zmc2V0WCxlLmdyaWRPZmZzZXRZLGUuZ3JpZFZlY3RvclgsZS5ncmlkVmVjdG9yWSxvKTt0aGlzLmRyYXdCaXRtYXAobixnKX1vbkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oLi4uYXJndW1lbnRzKX1vblRhYmxlcyhlLHQsaSxhKXtsZXQgcj10aGlzLmN1c3RvbVRhYmxlcztyfHwodGhpcy5jdXN0b21UYWJsZXM9cj17fSk7cltlXT1mdW5jdGlvbiBkZWNvZGVUYWJsZXNTZWdtZW50KGUsdCxpKXtjb25zdCBhPWVbdF0scj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzEpLHM9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCs1KSxuPW5ldyBSZWFkZXIoZSx0KzksaSksbz0xKyhhPj4xJjcpLGc9MSsoYT4+NCY3KSxjPVtdO2xldCBsLGgsQz1yO2Rve2w9bi5yZWFkQml0cyhvKTtoPW4ucmVhZEJpdHMoZyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbQyxsLGgsMF0pKTtDKz0xPDxofXdoaWxlKEM8cyk7bD1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW3ItMSxsLDMyLDAsImxvd2VyIl0pKTtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbcyxsLDMyLDBdKSk7aWYoMSZhKXtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbbCwwXSkpfXJldHVybiBuZXcgSHVmZm1hblRhYmxlKGMsITEpfSh0LGksYSl9fWNsYXNzIEh1ZmZtYW5MaW5le2NvbnN0cnVjdG9yKGUpe2lmKDI9PT1lLmxlbmd0aCl7dGhpcy5pc09PQj0hMDt0aGlzLnJhbmdlTG93PTA7dGhpcy5wcmVmaXhMZW5ndGg9ZVswXTt0aGlzLnJhbmdlTGVuZ3RoPTA7dGhpcy5wcmVmaXhDb2RlPWVbMV07dGhpcy5pc0xvd2VyUmFuZ2U9ITF9ZWxzZXt0aGlzLmlzT09CPSExO3RoaXMucmFuZ2VMb3c9ZVswXTt0aGlzLnByZWZpeExlbmd0aD1lWzFdO3RoaXMucmFuZ2VMZW5ndGg9ZVsyXTt0aGlzLnByZWZpeENvZGU9ZVszXTt0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09ZVs0XX19fWNsYXNzIEh1ZmZtYW5UcmVlTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdO2lmKGUpe3RoaXMuaXNMZWFmPSEwO3RoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aDt0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3c7dGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2U7dGhpcy5pc09PQj1lLmlzT09CfWVsc2UgdGhpcy5pc0xlYWY9ITF9YnVpbGRUcmVlKGUsdCl7Y29uc3QgaT1lLnByZWZpeENvZGU+PnQmMTtpZih0PD0wKXRoaXMuY2hpbGRyZW5baV09bmV3IEh1ZmZtYW5UcmVlTm9kZShlKTtlbHNle2xldCBhPXRoaXMuY2hpbGRyZW5baV07YXx8KHRoaXMuY2hpbGRyZW5baV09YT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpKTthLmJ1aWxkVHJlZShlLHQtMSl9fWRlY29kZU5vZGUoZSl7aWYodGhpcy5pc0xlYWYpe2lmKHRoaXMuaXNPT0IpcmV0dXJuIG51bGw7Y29uc3QgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX1jb25zdCB0PXRoaXMuY2hpbGRyZW5bZS5yZWFkQml0KCldO2lmKCF0KXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gZGF0YSIpO3JldHVybiB0LmRlY29kZU5vZGUoZSl9fWNsYXNzIEh1ZmZtYW5UYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3R8fHRoaXMuYXNzaWduUHJlZml4Q29kZXMoZSk7dGhpcy5yb290Tm9kZT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lW3RdO2kucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKGksaS5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IobGV0IGE9MDthPHQ7YSsrKWk9TWF0aC5tYXgoaSxlW2FdLnByZWZpeExlbmd0aCk7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoaSsxKTtmb3IobGV0IGk9MDtpPHQ7aSsrKWFbZVtpXS5wcmVmaXhMZW5ndGhdKys7bGV0IHIscyxuLG89MSxnPTA7YVswXT0wO2Zvcig7bzw9aTspe2c9ZythW28tMV08PDE7cj1nO3M9MDtmb3IoO3M8dDspe249ZVtzXTtpZihuLnByZWZpeExlbmd0aD09PW8pe24ucHJlZml4Q29kZT1yO3IrK31zKyt9bysrfX19Y29uc3QganQ9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxpPWp0W2VdO2lmKGkpcmV0dXJuIGk7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHN0YW5kYXJkIHRhYmxlIEIuJHtlfSBkb2VzIG5vdCBleGlzdGApfWZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0W2VdPW5ldyBIdWZmbWFuTGluZSh0W2VdKTtpPW5ldyBIdWZmbWFuVGFibGUodCwhMCk7anRbZV09aTtyZXR1cm4gaX1jbGFzcyBSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1pO3RoaXMucG9zaXRpb249dDt0aGlzLnNoaWZ0PS0xO3RoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdO3RoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTt0aGlzLnNoaWZ0LS07cmV0dXJuIGV9cmVhZEJpdHMoZSl7bGV0IHQsaT0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlpfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gaX1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIGdldEN1c3RvbUh1ZmZtYW5UYWJsZShlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9aVt0W3JdXTtpZihzKXtpZihlPT09YSlyZXR1cm4gczthKyt9fXRocm93IG5ldyBKYmlnMkVycm9yKCJjYW4ndCBmaW5kIGN1c3RvbSBIdWZmbWFuIHRhYmxlIil9ZnVuY3Rpb24gcmVhZFVuY29tcHJlc3NlZEJpdG1hcChlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO2EucHVzaChpKTtmb3IobGV0IGE9MDthPHQ7YSsrKWlbYV09ZS5yZWFkQml0KCk7ZS5ieXRlQWxpZ24oKX1yZXR1cm4gYX1mdW5jdGlvbiBkZWNvZGVNTVJCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGUse0s6LTEsQ29sdW1uczp0LFJvd3M6aSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOmF9KSxzPVtdO2xldCBuLG89ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtzLnB1c2goZSk7bGV0IGk9LTE7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYoaTwwKXtuPXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1uKXtuPTA7bz0hMH1pPTd9ZVthXT1uPj5pJjE7aS0tfX1pZihhJiYhbyl7Y29uc3QgZT01O2ZvcihsZXQgdD0wO3Q8ZSYmLTEhPT1yLnJlYWROZXh0Q2hhcigpO3QrKyk7fXJldHVybiBzfWNsYXNzIEpiaWcySW1hZ2V7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uIHBhcnNlSmJpZzJDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2ltcGxlU2VnbWVudFZpc2l0b3I7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07cHJvY2Vzc1NlZ21lbnRzKHJlYWRTZWdtZW50cyh7fSxhLmRhdGEsYS5zdGFydCxhLmVuZCksdCl9cmV0dXJuIHQuYnVmZmVyfShlKX1wYXJzZShlKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogSmJpZzJJbWFnZS5wYXJzZSIpfX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7Y29uc3QgdD1uZXcgSmJpZzJJbWFnZSxpPVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKTtpLnB1c2goe2RhdGE6dCxzdGFydDowLGVuZDp0Lmxlbmd0aH0pfX1pLnB1c2goe2RhdGE6ZSxzdGFydDowLGVuZDplLmxlbmd0aH0pO2NvbnN0IGE9dC5wYXJzZUNodW5rcyhpKSxyPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cjtlKyspYVtlXV49MjU1O3RoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBTOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIGs6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgbj0wO2NvbnN0IG89cipzKjMsZz1vPj4yLGM9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsZyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT00Mjc4MTkwMDgwfGU7aVthKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7aVthKzJdPXQ+Pj4xNnxyPDwxNnw0Mjc4MTkwMDgwO2lbYSszXT1yPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgcj00Km4scz10K287cjxzO3IrPTMpaVthKytdPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT0yNTV8ZTtpW2ErMV09ZTw8MjR8dD4+Pjh8MjU1O2lbYSsyXT10PDwxNnxyPj4+MTZ8MjU1O2lbYSszXT1yPDw4fDI1NX1mb3IobGV0IHI9NCpuLHM9dCtvO3I8cztyKz0zKWlbYSsrXT1lW3JdPDwyNHxlW3IrMV08PDE2fGVbcisyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczphfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjpzPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpuPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbZyxjXT1uP1tzLG9dOltvLHNdLGw9YT4+MyxoPTcmYSxDPWUubGVuZ3RoO2k9bmV3IFVpbnQzMkFycmF5KGkuYnVmZmVyKTtsZXQgUT0wO2ZvcihsZXQgYT0wO2E8cjthKyspe2Zvcihjb25zdCBhPXQrbDt0PGE7dCsrKXtjb25zdCBhPXQ8Qz9lW3RdOjI1NTtpW1ErK109MTI4JmE/YzpnO2lbUSsrXT02NCZhP2M6ZztpW1ErK109MzImYT9jOmc7aVtRKytdPTE2JmE/YzpnO2lbUSsrXT04JmE/YzpnO2lbUSsrXT00JmE/YzpnO2lbUSsrXT0yJmE/YzpnO2lbUSsrXT0xJmE/YzpnfWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxDP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoO2UrKylpW1ErK109YSYxPDw3LWU/YzpnfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOlF9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFh0PW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksVnQ9NDAxNyxadD03OTksX3Q9MzQwNix6dD0yMjc2LCR0PTE1NjcsQWk9Mzc4NCxlaT01NzkzLHRpPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgaSxhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3Qgbj1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxnPW5bMF07Zm9yKGk9MDtpPHM7aSsrKXtmb3IoYT0wO2E8ZVtpXTthKyspe2c9bi5wb3AoKTtnLmNoaWxkcmVuW2cuaW5kZXhdPXRbcl07Zm9yKDtnLmluZGV4PjA7KWc9bi5wb3AoKTtnLmluZGV4Kys7bi5wdXNoKGcpO2Zvcig7bi5sZW5ndGg8PWk7KXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99cisrfWlmKGkrMTxzKXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99fXJldHVybiBuWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxpKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtpKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxpLGEscixzLG4sbyxnLGM9ITEpe2NvbnN0IGw9aS5tY3VzUGVyTGluZSxoPWkucHJvZ3Jlc3NpdmUsQz10O2xldCBRPTAsRT0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihFPjApe0UtLTtyZXR1cm4gUT4+RSYxfVE9ZVt0KytdO2lmKDI1NT09PVEpe2NvbnN0IGE9ZVt0KytdO2lmKGEpe2lmKDIyMD09PWEmJmMpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrPTIpO3QrPTI7aWYoYT4wJiZhIT09aS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixhKX1lbHNlIGlmKDIxNz09PWEpe2lmKGMpe2NvbnN0IGU9cCooOD09PWkucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGkuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KFE8PDh8YSkudG9TdHJpbmcoMTYpfWApfX1FPTc7cmV0dXJuIFE+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHU9MDtsZXQgZCxmPTA7bGV0IHA9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGksYSxyKXtjb25zdCBzPWklbDtwPShpL2x8MCkqZS52K2E7Y29uc3Qgbj1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsbikpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxpKXtwPWkvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1pJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLGEpKX1jb25zdCBtPWEubGVuZ3RoO2xldCB5LHcsYixELFMsaztrPWg/MD09PXM/MD09PW8/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTw8ZztlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGd9OjA9PT1vP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih1PjApe3UtLTtyZXR1cm59bGV0IGk9cztjb25zdCBhPW47Zm9yKDtpPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe3U9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31pKz0xNjtjb250aW51ZX1pKz1zO2NvbnN0IG49WHRbaV07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxnKTtpKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgaT1zO2NvbnN0IGE9bjtsZXQgcixvLGM9MDtmb3IoO2k8PWE7KXtjb25zdCBhPXQrWHRbaV0scz1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKGYpe2Nhc2UgMDpvPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZvO2M9bz4+NDtpZigwPT09cilpZihjPDE1KXt1PXJlY2VpdmUoYykrKDE8PGMpO2Y9NH1lbHNle2M9MTY7Zj0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtkPXJlY2VpdmVBbmRFeHRlbmQocik7Zj1jPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7Yy0tOzA9PT1jJiYoZj0yPT09Zj8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2UuYmxvY2tEYXRhW2FdPWQ8PGc7Zj0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpKX1pKyt9aWYoND09PWYpe3UtLTswPT09dSYmKGY9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLHM9aT4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IG49WHRbcl07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBSLE49MDtjb25zdCBHPTE9PT1tP2FbMF0uYmxvY2tzUGVyTGluZSphWzBdLmJsb2Nrc1BlckNvbHVtbjpsKmkubWN1c1BlckNvbHVtbjtsZXQgTSxVO2Zvcig7Tjw9Rzspe2NvbnN0IGk9cj9NYXRoLm1pbihHLU4scik6RztpZihpPjApe2Zvcih3PTA7dzxtO3crKylhW3ddLnByZWQ9MDt1PTA7aWYoMT09PW0pe3k9YVswXTtmb3IoUz0wO1M8aTtTKyspe2RlY29kZUJsb2NrKHksayxOKTtOKyt9fWVsc2UgZm9yKFM9MDtTPGk7UysrKXtmb3Iodz0wO3c8bTt3Kyspe3k9YVt3XTtNPXkuaDtVPXkudjtmb3IoYj0wO2I8VTtiKyspZm9yKEQ9MDtEPE07RCsrKWRlY29kZU1jdSh5LGssTixiLEQpfU4rK319RT0wO1I9ZmluZE5leHRGaWxlTWFya2VyKGUsdCk7aWYoIVIpYnJlYWs7aWYoUi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHtpPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ui5pbnZhbGlkfWApO3Q9Ui5vZmZzZXR9aWYoIShSLm1hcmtlcj49NjU0ODgmJlIubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1DfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsaSl7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHI9ZS5ibG9ja0RhdGE7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkLGYscCxtLHksdztpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe1E9clt0K2VdO0U9clt0K2UrMV07dT1yW3QrZSsyXTtkPXJbdCtlKzNdO2Y9clt0K2UrNF07cD1yW3QrZSs1XTttPXJbdCtlKzZdO3k9clt0K2UrN107USo9YVtlXTtpZihFfHV8ZHxmfHB8bXx5KXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cz1laSpRKzEyOD4+ODtuPWVpKmYrMTI4Pj44O289dTtnPW07Yz10aSooRS15KSsxMjg+Pjg7Qz10aSooRSt5KSsxMjg+Pjg7bD1kPDw0O2g9cDw8NDtzPXMrbisxPj4xO249cy1uO3c9bypBaStnKiR0KzEyOD4+ODtvPW8qJHQtZypBaSsxMjg+Pjg7Zz13O2M9YytoKzE+PjE7aD1jLWg7Qz1DK2wrMT4+MTtsPUMtbDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKnp0K0MqX3QrMjA0OD4+MTI7Yz1jKl90LUMqenQrMjA0OD4+MTI7Qz13O3c9bCpadCtoKlZ0KzIwNDg+PjEyO2w9bCpWdC1oKlp0KzIwNDg+PjEyO2g9dztpW2VdPXMrQztpW2UrN109cy1DO2lbZSsxXT1uK2g7aVtlKzZdPW4taDtpW2UrMl09bytsO2lbZSs1XT1vLWw7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1laSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoRXx1fGR8ZnxwfG18eSl7cz1laSpRKzIwNDg+PjEyO249ZWkqZisyMDQ4Pj4xMjtvPXU7Zz1tO2M9dGkqKEUteSkrMjA0OD4+MTI7Qz10aSooRSt5KSsyMDQ4Pj4xMjtsPWQ7aD1wO3M9NDExMisocytuKzE+PjEpO249cy1uO3c9bypBaStnKiR0KzIwNDg+PjEyO289byokdC1nKkFpKzIwNDg+PjEyO2c9dztjPWMraCsxPj4xO2g9Yy1oO0M9QytsKzE+PjE7bD1DLWw7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9Yyp6dCtDKl90KzIwNDg+PjEyO2M9YypfdC1DKnp0KzIwNDg+PjEyO0M9dzt3PWwqWnQraCpWdCsyMDQ4Pj4xMjtsPWwqVnQtaCpadCsyMDQ4Pj4xMjtoPXc7UT1zK0M7eT1zLUM7RT1uK2g7bT1uLWg7dT1vK2w7cD1vLWw7ZD1nK2M7Zj1nLWM7UTwxNj9RPTA6UT49NDA4MD9RPTI1NTpRPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O3U8MTY/dT0wOnU+PTQwODA/dT0yNTU6dT4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDt5PDE2P3k9MDp5Pj00MDgwP3k9MjU1Onk+Pj00O3JbdCtlXT1RO3JbdCtlKzhdPUU7clt0K2UrMTZdPXU7clt0K2UrMjRdPWQ7clt0K2UrMzJdPWY7clt0K2UrNDBdPXA7clt0K2UrNDhdPW07clt0K2UrNTZdPXl9ZWxzZXt3PWVpKlErODE5Mj4+MTQ7dz13PC0yMDQwPzA6dz49MjAyND8yNTU6dysyMDU2Pj40O3JbdCtlXT13O3JbdCtlKzhdPXc7clt0K2UrMTZdPXc7clt0K2UrMjRdPXc7clt0K2UrMzJdPXc7clt0K2UrNDBdPXc7clt0K2UrNDhdPXc7clt0K2UrNTZdPXd9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBpPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHI9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxpO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHIpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGk9dCl7Y29uc3QgYT1lLmxlbmd0aC0xO2xldCByPWk8dD9pOnQ7aWYodD49YSlyZXR1cm4gbnVsbDtjb25zdCBzPXJlYWRVaW50MTYoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG49cmVhZFVpbnQxNihlLHIpO2Zvcig7IShuPj02NTQ3MiYmbjw9NjU1MzQpOyl7aWYoKytyPj1hKXJldHVybiBudWxsO249cmVhZFVpbnQxNihlLHIpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpuLG9mZnNldDpyfX1mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxpPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IGEgb2YgZS5jb21wb25lbnRzKXtjb25zdCByPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSphLmgvZS5tYXhIKSxzPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqYS52L2UubWF4Viksbj10KmEuaCxvPTY0KihpKmEudikqKG4rMSk7YS5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7YS5ibG9ja3NQZXJMaW5lPXI7YS5ibG9ja3NQZXJDb2x1bW49c31lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWl9ZnVuY3Rpb24gcmVhZERhdGFCbG9jayhlLHQpe2NvbnN0IGk9cmVhZFVpbnQxNihlLHQpO2xldCBhPSh0Kz0yKStpLTI7Y29uc3Qgcj1maW5kTmV4dEZpbGVNYXJrZXIoZSxhLHQpO2lmKHI/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIityLmludmFsaWQpO2E9ci5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KHQsYSk7cmV0dXJue2FwcERhdGE6cyxuZXdPZmZzZXQ6dCs9cy5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCl7Y29uc3QgaT1yZWFkVWludDE2KGUsdCksYT0odCs9MikraS0yLHI9ZmluZE5leHRGaWxlTWFya2VyKGUsYSx0KTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDphfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7bGV0IGk9MCxhPW51bGwscj1yZWFkVWludDE2KGUsaSk7aSs9MjtpZig2NTQ5NiE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO3I9cmVhZFVpbnQxNihlLGkpO2krPTI7QTpmb3IoOzY1NDk3IT09cjspe3N3aXRjaChyKXtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDphPWVbaSs3XTticmVhayBBO2Nhc2UgNjU1MzU6MjU1IT09ZVtpXSYmaS0tfWk9c2tpcERhdGEoZSxpKTtyPXJlYWRVaW50MTYoZSxpKTtpKz0yfXJldHVybiA0IT09YSYmKDMhPT1hfHwwIT09dCl9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBpLGEscj0wLHM9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxsPVtdO2xldCBoPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09aCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7aD1yZWFkVWludDE2KGUscik7cis9MjtBOmZvcig7NjU0OTchPT1oOyl7bGV0IEMsUSxFO3N3aXRjaChoKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTp1LG5ld09mZnNldDpkfT1yZWFkRGF0YUJsb2NrKGUscik7cj1kOzY1NTA0PT09aCYmNzQ9PT11WzBdJiY3MD09PXVbMV0mJjczPT09dVsyXSYmNzA9PT11WzNdJiYwPT09dVs0XSYmKHM9e3ZlcnNpb246e21ham9yOnVbNV0sbWlub3I6dVs2XX0sZGVuc2l0eVVuaXRzOnVbN10seERlbnNpdHk6dVs4XTw8OHx1WzldLHlEZW5zaXR5OnVbMTBdPDw4fHVbMTFdLHRodW1iV2lkdGg6dVsxMl0sdGh1bWJIZWlnaHQ6dVsxM10sdGh1bWJEYXRhOnUuc3ViYXJyYXkoMTQsMTQrMyp1WzEyXSp1WzEzXSl9KTs2NTUxOD09PWgmJjY1PT09dVswXSYmMTAwPT09dVsxXSYmMTExPT09dVsyXSYmOTg9PT11WzNdJiYxMDE9PT11WzRdJiYobj17dmVyc2lvbjp1WzVdPDw4fHVbNl0sZmxhZ3MwOnVbN108PDh8dVs4XSxmbGFnczE6dVs5XTw8OHx1WzEwXSx0cmFuc2Zvcm1Db2RlOnVbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBmPXJlYWRVaW50MTYoZSxyKTtyKz0yO2NvbnN0IHA9ZityLTI7bGV0IG07Zm9yKDtyPHA7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoUT0wO1E8NjQ7USsrKXttPVh0W1FdO2lbbV09cmVhZFVpbnQxNihlLHIpO3IrPTJ9fWVsc2UgZm9yKFE9MDtRPDY0O1ErKyl7bT1YdFtRXTtpW21dPWVbcisrXX1nWzE1JnRdPWl9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtyKz0yO2k9e307aS5leHRlbmRlZD02NTQ3Mz09PWg7aS5wcm9ncmVzc2l2ZT02NTQ3ND09PWg7aS5wcmVjaXNpb249ZVtyKytdO2NvbnN0IHk9cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5zY2FuTGluZXM9dHx8eTtpLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuY29tcG9uZW50cz1bXTtpLmNvbXBvbmVudElkcz17fTtjb25zdCB3PWVbcisrXTtsZXQgYj0wLEQ9MDtmb3IoQz0wO0M8dztDKyspe2NvbnN0IHQ9ZVtyXSxhPWVbcisxXT4+NCxzPTE1JmVbcisxXTtiPGEmJihiPWEpO0Q8cyYmKEQ9cyk7Y29uc3Qgbj1lW3IrMl07RT1pLmNvbXBvbmVudHMucHVzaCh7aDphLHY6cyxxdWFudGl6YXRpb25JZDpuLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtpLmNvbXBvbmVudElkc1t0XT1FLTE7cis9M31pLm1heEg9YjtpLm1heFY9RDtwcmVwYXJlQ29tcG9uZW50cyhpKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IFM9cmVhZFVpbnQxNihlLHIpO3IrPTI7Zm9yKEM9MjtDPFM7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgYT0wO2ZvcihRPTA7UTwxNjtRKysscisrKWErPWlbUV09ZVtyXTtjb25zdCBzPW5ldyBVaW50OEFycmF5KGEpO2ZvcihRPTA7UTxhO1ErKyxyKyspc1tRXT1lW3JdO0MrPTE3K2E7KHQ+PjQ/YzpsKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShpLHMpfWJyZWFrO2Nhc2UgNjU1MDE6cis9MjthPXJlYWRVaW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3Qgaz0xPT0rK28mJiF0O3IrPTI7Y29uc3QgUj1lW3IrK10sTj1bXTtmb3IoQz0wO0M8UjtDKyspe2NvbnN0IHQ9ZVtyKytdLGE9aS5jb21wb25lbnRJZHNbdF0scz1pLmNvbXBvbmVudHNbYV07cy5pbmRleD10O2NvbnN0IG49ZVtyKytdO3MuaHVmZm1hblRhYmxlREM9bFtuPj40XTtzLmh1ZmZtYW5UYWJsZUFDPWNbMTUmbl07Ti5wdXNoKHMpfWNvbnN0IEc9ZVtyKytdLE09ZVtyKytdLFU9ZVtyKytdO3RyeXtyKz1kZWNvZGVTY2FuKGUscixpLE4sYSxHLE0sVT4+NCwxNSZVLGspfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgQX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6cis9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLTticmVhaztkZWZhdWx0OmNvbnN0IHg9ZmluZE5leHRGaWxlTWFya2VyKGUsci0yLHItMyk7aWYoeD8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIit4LmludmFsaWQpO3I9eC5vZmZzZXQ7YnJlYWt9aWYoIXh8fHI+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBBfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2gudG9TdHJpbmcoMTYpKX1oPXJlYWRVaW50MTYoZSxyKTtyKz0yfWlmKCFpKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1pLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWkuc2NhbkxpbmVzO3RoaXMuamZpZj1zO3RoaXMuYWRvYmU9bjt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaS5jb21wb25lbnRzKXtjb25zdCB0PWdbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvaS5tYXhILHNjYWxlWTplLnYvaS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpPSExKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkPTA7Y29uc3QgZj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHA9ZSp0KmYsbT1uZXcgVWludDhDbGFtcGVkQXJyYXkocCkseT1uZXcgVWludDMyQXJyYXkoZSksdz00Mjk0OTY3Mjg4O2xldCBiO2ZvcihoPTA7aDxmO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07bj1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtkPWg7dT1zLm91dHB1dDtnPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKG4hPT1iKXtmb3IoYz0wO2M8ZTtjKyspe0M9MHxjKm47eVtjXT0oQyZ3KTw8M3w3JkN9Yj1ufWZvcihsPTA7bDx0O2wrKyl7Qz0wfGwqbztFPWcqKEMmdyl8KDcmQyk8PDM7Zm9yKGM9MDtjPGU7YysrKXttW2RdPXVbRSt5W2NdXTtkKz1mfX19bGV0IEQ9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2l8fDQhPT1mfHxEfHwoRD1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoRClmb3IoaD0wO2g8cDspZm9yKEM9MCxRPTA7QzxmO0MrKyxoKyssUSs9MiltW2hdPShtW2hdKkRbUV0+PjgpK0RbUSsxXTtyZXR1cm4gbX1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9Myl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09dC0xNzkuNDU2KzEuNDAyKmE7ZVtyKzFdPXQrMTM1LjQ1OS0uMzQ0KmktLjcxNCphO2VbcisyXT10LTIyNi44MTYrMS43NzIqaX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgaT0wLGE9MCxyPWUubGVuZ3RoO2k8cjtpKz0zLGErPTQpe2NvbnN0IHI9ZVtpXSxzPWVbaSsxXSxuPWVbaSsyXTt0W2FdPXItMTc5LjQ1NisxLjQwMipuO3RbYSsxXT1yKzEzNS40NTktLjM0NCpzLS43MTQqbjt0W2ErMl09ci0yMjYuODE2KzEuNzcyKnM7dFthKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT1pKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSppKy4wMDA0MzcxMzA0NzU5MjYyMzIqYS01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqci0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrYSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqYSsuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KnIrMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypyKy40ODM1NzA4ODQ1MTI2NSkrciooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcisuNDg0NzkxNTYxNDkwNzc2KTtlW3MrK109MTA3LjI2ODAzOTM5NzcyNCtpKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmktLjAwMDY0MDk5MjAxODI5Nzk0NSphKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KnItLjE3NjQ5MTc5MjQ2Mjg3NSkrYSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqYSsuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKnItLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KnIrLjI1ODAyOTEwMjA2ODQ1KStyKigtLjAwMDMxODkxMzExNzU4ODMyOCpyLS4yMTM3NDI0MDAzMjM2NjUpO2VbcysrXT1pKigtLjAwMDU3MDExNTE5Njk3MzY3NyppLTI2MzQwOTA1MTAwNDU4OWUtMTkqYSsuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipyKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NythKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSphLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKnItLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KnIrLjExNjkzNTAyMDQ2NTE0NSkrciooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPWEqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmErLjAwMDQzNzEzMDQ3NTkyNjIzMipyLTU0MDgwNjEwMDY0NTk5ZS0xOCppKy4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtyKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypyKy4wMDA4MTcwNzY5MTEzNDY2MjUqaS0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KStpKiguMDAwOTYxMjUwMTg0MTMwNjg4KmktLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K2EqKDIxOTkyNzEwNDUyNTc0MWUtMTkqYS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KnIrLjAwMDY1OTM5NzAwMTI0NTU3NyppKy4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KStyKigtLjAwMDc3ODI2OTk0MTUxMzY4MypyKy4wMDEzMDg3MjI2MTQwODI3NSppKy4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKStpKiguMDAxMjY5MzUzNjgxMTQ4NDMqaS0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPWEqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmEtMjYzNDA5MDUxMDA0NTg5ZS0xOSpyKy4wMDIwNzQxMDg4MTE1MDEyKmktLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K3IqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KnItLjAwMDEzMjY4OTA0Mzk2MTQ0NippKy4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KStpKiguMDAxNzQ0MTgxMzI5Mjc1ODIqaS0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCppKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmkrLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KnItMS4xMTg1NjExODY3MjAzOTM3KStpKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqaS04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnItLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NipyKy4wNjg2NzQyMjM4NTk1MzQ1KS1yKiguMDAwMzM2MTk3MTc3NjE4MzkzNypyKy43NDMwNjU5MTUxMzQyMjU0KTtlW3MrK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqaSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMipyLS4zMTA5Njg5NTg3NTE1ODc1KStpKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmkrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NipyLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypyLS4wOTc1MTkyNzc3NDcyODkzMyktciooLjAwMDMxODkxMzExNzU4ODMyODEqcisuNzM2NDg4MzgwNzczMzE2OCk7ZVtzKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqaSsuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipyLS4wNTU2MjE4Njk4MDI2NDAzNCkraSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmkrLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypyLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpyLS43NTkxNDU0NjQ5NzQ5NjA5KS1yKiguMDAwMzQzNTMxOTk2NTEwNTU1MypyKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT0yNTUraSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmkrLjAwMDgzNzkyNjIxMjEwMTM3MjcqYSsuMDAwMjg5NDcxODE4ODY0MzI5NCpyKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2EqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSphLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKnItLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK3IqKC0zODc4MDk5MjEyODY5MzYzZS0yMCpyLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUraSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmkrLjAwMDkyNDUzNzEzMjU3MzU4NSphKy4wMDAxMDU2NzM1OTYxODY4MzU5MypyKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2EqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqYSsuMDAwMjcwMjg0NTI1MzUzNDcxNCpyKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK3IqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKnIrLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2kqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSppKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSphKy4wMDA0NzUxOTg1MDk3NTgzNTg5KnItMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KSthKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqYSsuMDAwOTY5MjIzOTEzMDcyNTE4NipyKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKStyKig1LjA2ODg4MjkxNDA2ODc2OWUtNypyKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6aT0hMSxmb3JjZVJHQjphPSExLGlzU291cmNlUERGOnI9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxyKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoaXx8YSkpe2NvbnN0IGU9cy5sZW5ndGgqKGk/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgYT0wO2lmKGkpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT02NTc5MyplW2ldfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT0xNjg0MzAwOCplW2ldfDI1NX0ocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gaT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTphP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjeT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jeT1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxhPXQubGVuZ3RoLHI9bmV3IEludDMyQXJyYXkoYSk7bGV0IHM9ITE7Y29uc3Qgbj0oMTw8aSktMTtmb3IobGV0IGU9MDtlPGE7ZSs9Mil7cltlXT0yNTYqKHRbZSsxXS10W2VdKXwwO3JbZSsxXT10W2VdKm58MDsyNTY9PT1yW2VdJiYwPT09cltlKzFdfHwocz0hMCl9cyYmKGUuZGVjb2RlVHJhbnNmb3JtPXIpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I3coZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aC0xO3Q8aTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI3coZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgaT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWkubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGk9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy4jdyhpKTtpZighSnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihhLGUuY29sb3JUcmFuc2Zvcm0pKXJldHVybiBudWxsO3Q9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fXZhciBpaSxhaT0oaWk9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmM6dm9pZCAwLGZ1bmN0aW9uKGU9e30pe3ZhciB0LGksYT1lO25ldyBQcm9taXNlKCgoZSxhKT0+e3Q9ZTtpPWF9KSk7YS5kZWNvZGU9ZnVuY3Rpb24oZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6aT0hMSxzbWFza0luRGF0YTpyPSExfSl7Y29uc3Qgcz1lLmxlbmd0aCxuPWEuX21hbGxvYyhzKTthLkhFQVBVOC5zZXQoZSxuKTtjb25zdCBvPWEuX2pwMl9kZWNvZGUobixzLHQ+MD90OjAsISFpLCEhcik7YS5fZnJlZShuKTtpZihvKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOmd9PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZ307dmFyIHI9T2JqZWN0LmFzc2lnbih7fSxhKSxzPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxuPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihuPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtpaSYmKG49aWkpO249bi5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm4uc3Vic3RyKDAsbi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBvPWEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZz1hLnByaW50RXJyfHxjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihhLHIpO3I9bnVsbDthLmFyZ3VtZW50cyYmYS5hcmd1bWVudHM7YS50aGlzUHJvZ3JhbSYmKHM9YS50aGlzUHJvZ3JhbSk7dmFyIGMsbD1hLndhc21CaW5hcnk7ZnVuY3Rpb24gdHJ5UGFyc2VBc0RhdGFVUkkoZSl7aWYoaXNEYXRhVVJJKGUpKXJldHVybiBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQoZSl7Zm9yKHZhciB0PWF0b2IoZSksaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7KythKWlbYV09dC5jaGFyQ29kZUF0KGEpO3JldHVybiBpfShlLnNsaWNlKEQubGVuZ3RoKSl9dmFyIGgsQyxRLEUsdT0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PVE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9RT1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIGQsZj1bXSxwPVtdLG09W10seT0wLHc9bnVsbCxiPW51bGwsRD0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChEKTtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09ZCYmbClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobCk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDt0aHJvdydzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZDogeW91IGNhbiBwcmVsb2FkIGl0IHRvIE1vZHVsZVsid2FzbUJpbmFyeSJdIG1hbnVhbGx5LCBvciBlbWNjLnB5IHdpbGwgZG8gdGhhdCBmb3IgeW91IHdoZW4gZ2VuZXJhdGluZyBIVE1MIChidXQgbm90IEpTKSd9KGUpO2k9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShhKTtyZXR1cm5bbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGksdCksaV19Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBTLGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX0saz1hLm5vRXhpdFJ1bnRpbWV8fCEwLFI9MCxOPXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBoO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9Pmt8fFI+MCxfcHJvY19leGl0PWU9PntoPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7YS5vbkV4aXQ/LihlKTt1PSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e2g9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighdSl0cnl7ZSgpOygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KGgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWMuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LEc9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpzfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gRyl2b2lkIDA9PT1HW3RdP2RlbGV0ZSBlW3RdOmVbdF09R1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LE09W251bGwsW10sW11dLFU9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXI6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxpPU5hTik9Pntmb3IodmFyIGE9dCtpLHI9dDtlW3JdJiYhKHI+PWEpOykrK3I7aWYoci10PjE2JiZlLmJ1ZmZlciYmVSlyZXR1cm4gVS5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9TVtlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/bzpnKShVVEY4QXJyYXlUb1N0cmluZyhpKSk7aS5sZW5ndGg9MH1lbHNlIGkucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQpPT5lP1VURjhBcnJheVRvU3RyaW5nKFEsZSx0KToiIix4PXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXthLm9uQWJvcnQ/LihlKTtnKGU9IkFib3J0ZWQoIitlKyIpIik7dT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHQ9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtpKHQpO3Rocm93IHR9KCIiKSxjOihlLHQsaSk9PlEuY29weVdpdGhpbihlLHQsdCtpKSxsOigpPT57az0hMTtSPTB9LG46KGUsdCk9PntpZihOW2VdKXtjbGVhclRpbWVvdXQoTltlXS5pZCk7ZGVsZXRlIE5bZV19aWYoIXQpcmV0dXJuIDA7dmFyIGk9c2V0VGltZW91dCgoKCk9PntkZWxldGUgTltlXTtjYWxsVXNlckNhbGxiYWNrKCgoKT0+SChlLHBlcmZvcm1hbmNlLm5vdygpKSkpfSksdCk7TltlXT17aWQ6aSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxnOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsdCl7ZT4+PTI7Y29uc3QgaT1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCkscj1hLkhFQVAzMi5zdWJhcnJheShlLGUrdCk7aS5zZXQocil9LGY6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzMoZSx0LGkscil7ZT4+PTI7dD4+PTI7aT4+PTI7Y29uc3Qgcz1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypyKSxuPWEuSEVBUDMyLnN1YmFycmF5KGUsZStyKSxvPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtyKSxnPWEuSEVBUDMyLnN1YmFycmF5KGksaStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtzWzMqZV09bltlXTtzWzMqZSsxXT1vW2VdO3NbMyplKzJdPWdbZV19fSxlOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc180KGUsdCxpLHIscyl7ZT4+PTI7dD4+PTI7aT4+PTI7cj4+PTI7Y29uc3Qgbj1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxvPWEuSEVBUDMyLnN1YmFycmF5KGUsZStzKSxnPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtzKSxjPWEuSEVBUDMyLnN1YmFycmF5KGksaStzKSxsPWEuSEVBUDMyLnN1YmFycmF5KHIscitzKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtuWzQqZV09b1tlXTtuWzQqZSsxXT1nW2VdO25bNCplKzJdPWNbZV07bls0KmUrM109bFtlXX19LG86ZT0+e3ZhciB0LGksYT1RLmxlbmd0aCxyPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+cilyZXR1cm4hMTtmb3IodmFyIHM9MTtzPD00O3MqPTIpe3ZhciBuPWEqKDErLjIvcyk7bj1NYXRoLm1pbihuLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihyLCh0PU1hdGgubWF4KGUsbiksaT02NTUzNixNYXRoLmNlaWwodC9pKSppKSk7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0scDooZSx0KT0+e3ZhciBpPTA7Z2V0RW52U3RyaW5ncygpLmZvckVhY2goKChhLHIpPT57dmFyIHM9dCtpO0VbZSs0KnI+PjJdPXM7KChlLHQpPT57Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpQ1t0KytdPWUuY2hhckNvZGVBdChpKTtDW3RdPTB9KShhLHMpO2krPWEubGVuZ3RoKzF9KSk7cmV0dXJuIDB9LHE6KGUsdCk9Pnt2YXIgaT1nZXRFbnZTdHJpbmdzKCk7RVtlPj4yXT1pLmxlbmd0aDt2YXIgYT0wO2kuZm9yRWFjaCgoZT0+YSs9ZS5sZW5ndGgrMSkpO0VbdD4+Ml09YTtyZXR1cm4gMH0scjplPT41MixqOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxpLGEscil7cmV0dXJuIDcwfSxiOihlLHQsaSxhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPGk7cysrKXt2YXIgbj1FW3Q+PjJdLG89RVt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxRW24rZ10pO3IrPW99RVthPj4yXT1yO3JldHVybiAwfSxzOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2ZvcihsZXQgZT0wO2U8dDtlKyspe2lbNCplXT1pWzQqZSsxXT1pWzQqZSsyXT1yW2VdO2lbNCplKzNdPTI1NX19LGk6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSx0LGkpe2U+Pj0yO3Q+Pj0yO2NvbnN0IHI9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1hLkhFQVAzMi5zdWJhcnJheShlLGUraSksbj1hLkhFQVAzMi5zdWJhcnJheSh0LHQraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109bltlXX19LGQ6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGs6X3Byb2NfZXhpdCxoOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1uW2VdO3NbNCplKzFdPW9bZV07c1s0KmUrMl09Z1tlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSxMPWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSx0KXtMPWUuZXhwb3J0cztjPUwudDt1cGRhdGVNZW1vcnlWaWV3cygpOyFmdW5jdGlvbiBhZGRPbkluaXQoZSl7cC51bnNoaWZ0KGUpfShMLnUpOyFmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGUpe3ktLTthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/Lih5KTtpZigwPT15KXtpZihudWxsIT09dyl7Y2xlYXJJbnRlcnZhbCh3KTt3PW51bGx9aWYoYil7dmFyIHQ9YjtiPW51bGw7dCgpfX19KCk7cmV0dXJuIEx9IWZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koZSl7eSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKHkpfSgpO3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6eH19KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7ZyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9ZD8/PSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCMlFFY1lBTi9mMzhCZjJBRWYzOS9md0YvWUFGL0FHQUNmMzhBWUFGL0FYOWdBMzkvZndCZ0FuOS9BWDlnQkg5L2YzOEFZQU4vZm44QmZtQUZmMzkvZjM4QmYyQUFBR0FDZm44QmYyQURmMzUvQVg5Z0FuNS9BWDVnQlg5L2YzOS9BR0FIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQVg5Z0FBRi9ZQVovZjM5L2YzOEFZQVovZkg5L2YzOEJmMkFDZjN3QmYyQUlmMzkvZjM5L2YzOEFZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmR0FDZjN3QUFuTVRBV0VCWVFBQ0FXRUJZZ0FCQVdFQll3QUZBV0VCWkFBQ0FXRUJaUUFPQVdFQlpnQUhBV0VCWndBREFXRUJhQUFIQVdFQmFRQUZBV0VCYWdBSkFXRUJhd0FDQVdFQmJBQUtBV0VCYlFBS0FXRUJiZ0FXQVdFQmJ3QUVBV0VCY0FBR0FXRUJjUUFHQVdFQmNnQUVBV0VCY3dBREE4MEJ5d0VIQWdVQUJnUUFCUVlFQVFVRURnVVhCZ0lDQWdJQUJoQUdFUVFDQ3d3U0FnVUNCQWNFQWhNREZBTUNBZ1lDR0FNSEJRQUFCQU1CQ2drSkF3QUpCZ0VFQkFVRkV3OEJBUU1BQXdZQ0VBUVVHUUlIQmdNSEJ3RUJBZ0FFQ2dZYUJ3UUVEdzREQmdRQUJBSUNBZ0FHQmdBQkFRRUJBUUVCQVFBQUFBQUFCZ01DQWdJREF3TURBd29LQWdJYkFBTVZDQVFFQUFnREF3a0VDQXNOQUFnQUFRRUJBUUVCQVFFQkRBQUVCQVVKRHdFU0VRRUFBQVlEQXdFRkJRVUZCUVVGQlFFTkFRRUJBUUVCQVFFQkN3UUZBWEFCY25JRkJ3RUJnZ0tBZ0FJR0NBRi9BVUhRNEFVTEJ5QUhBWFFDQUFGMUFFb0JkZ0NwQVFGM0FCUUJlQUVBQVhrQXFBRUJlZ0NkQVFuUkFRRUFRUUVMY1ZyZEFkTUJnUUdCQVRDNUFhNEJxZ0dZQVpjQmxnR1ZBWlFCa3dHU0FaRUJXNDRCalFHTUFZc0JLNG9CaVFHSUFZY0JoZ0dGQVlRQmd3R0NBZHdCMndIYUFka0IyQUhYQVVuV0FkVUJTVW5VQWRJQjBRSFFBYzhCemdITkFjd0J5d0hLQWNRQnVBRzNBYllCdFFHMEFiTUJzZ0d4QWJBQnJ3R3RBYXdCcXdGU1UxVmJVWkFCWEVCWmp3RllUazlYTVN5OEFic0J2UUhGQWNrQnhnSEFBYm9CdmdHL0FjY0J5QUY5d1FIQ0FjTUJXcWNCcGdHZUFhQUJud0dhQWFNQnBBR2xBYUlCb1FHYkFad0JDc210RHNzQmdnSUJBMzhqQUVHUUJHc2lCQ1FBQWtBZ0FFVU5BQUpBQWtBQ1FBSkFJQUZCQVdzT0JBQUJCQUlFQ3lBQVFReHFJUUVNQWdzZ0FFRVFhaUVCSUFCQkJHb2hBQXdCQ3lBQVFSUnFJUUVnQUVFSWFpRUFDeUFCS0FJQUlnVkZEUUFnQWtVTkFDQUFLQUlBSVFZZ0JFRUFRWUFFRUJraUFTQUROZ0tNQkNNQVFhQUJheUlBSkFBZ0FDQUJOZ0tVQVNBQVFmOEROZ0tZQVNBQVFRQkJrQUVRR1NJQVFYODJBa3dnQUVIbkFEWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmxBRnFOZ0pVSUFGQkFEb0FBQ0FBSUFJZ0EwSG9BRUhwQUJCMUlBQkJvQUZxSkFBZ0FVRUFPZ0QvQXlBQklBWWdCUkVEQUFzZ0JFR1FCR29rQUF2UUFnRUZmeUFBQkVBZ0FFRUVheUlES0FJQUlnUWhBU0FESVFJZ0FFRUlheWdDQUNJQUlBQkJmbkVpQUVjRVFDQUNJQUJySWdJb0FnUWlBU0FDS0FJSUlnVTJBZ2dnQlNBQk5nSUVJQUFnQkdvaEFRc2dBeUFFYWlJQUtBSUFJZ01nQUNBRGFrRUVheWdDQUVjRVFDQUFLQUlFSWdRZ0FDZ0NDQ0lBTmdJSUlBQWdCRFlDQkNBQklBTnFJUUVMSUFJZ0FUWUNBQ0FDSUFGQmZIRnFRUVJySUFGQkFYSTJBZ0FnQWdKL0lBSW9BZ0JCQ0dzaUFFSC9BRTBFUUNBQVFRTjJRUUZyREFFTElBQm5JUU1nQUVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FFSC9IMDBOQUJwQlB5QUFRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlBSUFCQlAwOGJDeUlCUVFSMElnQkI0TTBCYWpZQ0JDQUNJQUJCNk0wQmFpSUFLQUlBTmdJSUlBQWdBallDQUNBQ0tBSUlJQUkyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxDOGtDQVFSL0lBRkJBRFlDQUFKQUlBSkZEUUFnQVNBQ2FpRURBa0FnQWtFUVNRUkFJQUFoQVF3QkN3SkFJQUVnQUNBQ2FrOE5BQ0FBSUFOUERRQWdBQ0VCREFFTElBTkJFR3NoQmlBQUlBSkJjSEVpQldvaEFTQURJQVZySVFNRFFDQUdJQVJySUFBZ0JHcjlBQUFBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwUERnME1Dd29KQ0FjR0JRUURBZ0VBL1FzQUFDQUVRUkJxSWdRZ0JVY05BQXNnQWlBRlJnMEJDd0pBSUFKQkEzRWlCa1VFUUNBRklRUU1BUXRCQUNFQUlBVWhCQU5BSUFOQkFXc2lBeUFCTFFBQU9nQUFJQVJCQVdvaEJDQUJRUUZxSVFFZ0FFRUJhaUlBSUFaSERRQUxDeUFGSUFKclFYeExEUUFEUUNBRFFRRnJJQUV0QUFBNkFBQWdBMEVDYXlBQkxRQUJPZ0FBSUFOQkEyc2dBUzBBQWpvQUFDQURRUVJySWdNZ0FTMEFBem9BQUNBQlFRUnFJUUVnQkVFRWFpSUVJQUpIRFFBTEN3dUNCQUVEZnlBQ1FZQUVUd1JBSUFBZ0FTQUNFQUlnQUE4TElBQWdBbW9oQXdKQUlBQWdBWE5CQTNGRkJFQUNRQ0FBUVFOeFJRUkFJQUFoQWd3QkN5QUNSUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDeUFEUVh4eElRUUNRQ0FEUWNBQVNRMEFJQUlnQkVGQWFpSUZTdzBBQTBBZ0FpQUJLQUlBTmdJQUlBSWdBU2dDQkRZQ0JDQUNJQUVvQWdnMkFnZ2dBaUFCS0FJTU5nSU1JQUlnQVNnQ0VEWUNFQ0FDSUFFb0FoUTJBaFFnQWlBQktBSVlOZ0lZSUFJZ0FTZ0NIRFlDSENBQ0lBRW9BaUEyQWlBZ0FpQUJLQUlrTmdJa0lBSWdBU2dDS0RZQ0tDQUNJQUVvQWl3MkFpd2dBaUFCS0FJd05nSXdJQUlnQVNnQ05EWUNOQ0FDSUFFb0FqZzJBamdnQWlBQktBSThOZ0k4SUFGQlFHc2hBU0FDUVVCcklnSWdCVTBOQUFzTElBSWdCRThOQVFOQUlBSWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FrRUVhaUlDSUFSSkRRQUxEQUVMSUFOQkJFa0VRQ0FBSVFJTUFRc2dBMEVFYXlJRUlBQkpCRUFnQUNFQ0RBRUxJQUFoQWdOQUlBSWdBUzBBQURvQUFDQUNJQUV0QUFFNkFBRWdBaUFCTFFBQ09nQUNJQUlnQVMwQUF6b0FBeUFCUVFScUlRRWdBa0VFYWlJQ0lBUk5EUUFMQ3lBQ0lBTkpCRUFEUUNBQ0lBRXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2lBaUFEUncwQUN3c2dBQXN3QVFGL0FrQWdBRVVOQUNBQlJRMEFRUWdnQUNBQmJDSUJFQ2tpQUFSQUlBQkJBQ0FCRUJrYUN5QUFJUUlMSUFJTEVRQWdBRVVFUUVFQUR3dEJDQ0FBRUNrTDhnSUNBbjhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUFnQW1vaUEwRUJheUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FEUVFKcklBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRUVJySUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJCR3NnQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVFocklBRTJBZ0FnQWtFTWF5QUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtFUWF5QUJOZ0lBSUFKQkZHc2dBVFlDQUNBQ1FSaHJJQUUyQWdBZ0FrRWNheUFCTmdJQUlBUWdBMEVFY1VFWWNpSUVheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVNCcklnSkJIMHNOQUFzTElBQUxKd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBSkJBRUVBRUhVZ0EwRVFhaVFBQytnRkFRbC9JQUZGQkVCQkFBOExBbjhnQUVVRVFFRUlJQUVRS1F3QkN5QUJSUVJBSUFBUUZFRUFEQUVMQWtBZ0FVRkhTdzBBSUFBQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUIwRUlhaUVCQWtBQ2Z3SkFJQUJCQkdzaUNpSUVLQUlBSWdVZ0JHb2lBaWdDQUNJSklBSWdDV29pQ0VFRWF5Z0NBRWNFUUNBSUlBRWdCR29pQTBFUWFrOEVRQ0FDS0FJRUlnVWdBaWdDQ0NJQ05nSUlJQUlnQlRZQ0JDQURJQWdnQTJzaUFqWUNBQ0FESUFKQmZIRnFRUVJySUFKQkFYSTJBZ0FnQXdKL0lBTW9BZ0JCQ0dzaUFrSC9BRTBFUUNBQ1FRTjJRUUZyREFFTElBSkJIU0FDWnlJRmEzWkJCSE1nQlVFQ2RHdEI3Z0JxSUFKQi94OU5EUUFhUVQ4Z0FrRWVJQVZyZGtFQ2N5QUZRUUYwYTBISEFHb2lBaUFDUVQ5UEd3c2lBa0VFZENJRlFlRE5BV28yQWdRZ0F5QUZRZWpOQVdvaUJTZ0NBRFlDQ0NBRklBTTJBZ0FnQXlnQ0NDQUROZ0lFUWVqVkFVSG8xUUVwQXdCQ0FTQUNyWWFFTndNQUlBUWdBVFlDQUF3RUN5QURJQWhMRFFFZ0FpZ0NCQ0lCSUFJb0FnZ2lBellDQ0NBRElBRTJBZ1FnQkNBRklBbHFJZ0UyQWdBTUF3c2dCU0FCUVJCcVR3UkFJQVFnQVRZQ0FDQUVJQUZCZkhGcVFRUnJJQUUyQWdBZ0FTQUVhaUlESUFVZ0FXc2lBVFlDQUNBRElBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRZUROQVdvMkFnUWdBeUFFUWVqTkFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFlalZBVUhvMVFFcEF3QkNBU0FCcllhRU53TUFRUUVNQkF0QkFTQUJJQVZORFFFYUMwRUFDd3dCQ3lBRUlBRkJmSEZxUVFScklBRTJBZ0JCQVFzTkFScEJDQ0FIRUNraUFVVU5BQ0FCSUFBZ0J5QUtLQUlBUVFocklnWWdCaUFIU3hzUUZob2dBQkFVSUFFaEJnc2dCZ3NMTXdFQmZ5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRVFJQUFRZVNFQVFRQWdBU2dDRENBQUd3VkJBQXNnQVVFUWFpUUFDN3dFQVFWL0lBSWdBQ2dDTUNJRlRRUkFJQUVnQUNnQ0pDQUNFQllhSUFBZ0FDZ0NKQ0FDYWpZQ0pDQUFJQUFvQWpBZ0FtczJBakFnQUNBQUtRTTRJQUt0ZkRjRE9DQUNEd3NnQUMwQVJFRUVjUVJBSUFFZ0FDZ0NKQ0FGRUJZYUlBQW9BakFoQVNBQVFRQTJBakFnQUNBQklBQW9BaVJxTmdJa0lBQWdBQ2tET0NBQnJYdzNBemdnQlVGL0lBVWJEd3NDUUNBRkJFQWdBU0FBS0FJa0lBVVFGaUVFSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQVNBQVFRQTJBakFnQUNBQUtRTTRJQUd0ZkRjRE9DQUNJQUZySVFJZ0FTQUVhaUVCREFFTElBQWdBQ2dDSUNJSE5nSWtDd0pBQWtBRFFBSkFJQUFvQWdBaEJDQUFLQUlRSVFZQ1FDQUFLQUpBSWdnZ0Frc0VRQ0FBSUFjZ0NDQUVJQVlSQUFBaUJqWUNNQ0FHUVg5R0JFQU1CZ3NnQWlBR1RRMENJQUVnQUNnQ0pDQUdFQllhSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQkF3QkN5QUFJQUVnQWlBRUlBWVJBQUFpQkRZQ01DQUVRWDlHQkVBTUJRc2dBaUFFVFEwRElBQWdBQ2dDSUNJSE5nSWtJQVFoQmdzZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FFclh3M0F6Z2dBU0FFYWlFQklBSWdCR3NoQWlBRklBWnFJUVVNQVFzTElBRWdBQ2dDSkNBQ0VCWWFJQUFnQUNnQ0pDQUNhallDSkNBQUlBQW9BakFnQW1zMkFqQWdBQ0FBS1FNNElBS3RmRGNET0NBQ0lBVnFEd3NnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dCSzE4TndNNElBUWdCV29QQ3lBRFFRUkI2ZmtBUVFBUUV5QUFRUUEyQWpBZ0FDQUFLQUpFUVFSeU5nSkVJQVZCZnlBRkd3c1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRVlhQ3d1REJ3SUxmd0YrSUFBb0FoQWlCMEVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlZSWdKQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQkNBQUlBSkJCR3NpQlRZQ0dDQUFJQUZCQkdvMkFnQU1BUXRCZjBFQUlBQW9BaHdiSVFRZ0FrRUFUQVJBSUFJaEJRd0JDeUFDUVFGeElBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJVVU5BQ0FBSUFaQkFXbzJBZ0FnQmkwQUFDRUJJQUFnQWtFQmF6WUNHQ0FFUWY4QklBTjBRWDl6Y1NBQklBTjBjaUVFQ3lBQUtBSVVJUUVnQUNBRVFSaDJJZ3BCL3dGR05nSVVJQUJCQjBFSUlBRWJJZ0ZCQjBFSUlBUkIvd0Z4SWdaQi93RkdHMm9pQWtFSFFRZ2dCRUVJZGtIL0FYRWlBMEgvQVVZYmFpSUpRUWRCQ0NBRVFSQjJRZjhCY1NJRVFmOEJSaHNnQjJwcUlnZzJBaEFnQUNBQUtRTUlJQU1nQVhRZ0JDQUNkSElnQ2lBSmRISWdCbkt0SUFldGhvUWlERGNEQ0NBSVFSOU5CRUFDUUNBRlFRUk9CRUFnQUNnQ0FDSUJLQUlBSVFJZ0FDQUZRUVJyTmdJWUlBQWdBVUVFYWpZQ0FBd0JDMEVBSVFOQmYwRUFJQUFvQWh3YklRSWdCVUVBVEEwQUlBVkJBWEVnQUNnQ0FDRUJBa0FnQlVFQlJnUkFJQUVoQkF3QkN5QUZRZjcvLy84SGNTRUpRUUFoQmdOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFzZ0FDQUJRUUpxSWdRMkFnQWdBQ0FGUVFGck5nSVlJQUV0QUFFaEFTQUFJQVZCQW1zaUJUWUNHQ0FDUWY4QklBTjBRWDl6Y1NBTElBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFJZ0EwRVFhaUVESUFRaEFTQUdRUUpxSWdZZ0NVY05BQXNMUlEwQUlBQWdCRUVCYWpZQ0FDQUVMUUFBSVFFZ0FDQUZRUUZyTmdJWUlBSkIvd0VnQTNSQmYzTnhJQUVnQTNSeUlRSUxJQUFnQWtFWWRpSUJRZjhCUmpZQ0ZDQUFRUWRCQ0NBS1FmOEJSaHNpQkVFSFFRZ2dBa0gvQVhFaUJrSC9BVVliYWlJRlFRZEJDQ0FDUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2RCQjBFSUlBSkJFSFpCL3dGeElnSkIvd0ZHR3lBSWFtbzJBaEFnQUNBRElBUjBJQUlnQlhSeUlBRWdCM1J5SUFaeXJTQUlyWVlnRElRaUREY0RDQXNnREtjTGF3RUJmeU1BUVlBQ2F5SUZKQUFDUUNBQ0lBTk1EUUFnQkVHQXdBUnhEUUFnQlNBQklBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QVpHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VCNGdBMEdBQW1zaUEwSC9BVXNOQUFzTElBQWdCU0FERUI0TElBVkJnQUpxSkFBTE1RQWdBUUovSUFJb0FreEJBRWdFUUNBQUlBRWdBaEJHREFFTElBQWdBU0FDRUVZTElnQkdCRUFQQ3lBQUlBRnVHZ3NYQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWRCQVJBcUdndWhBUUVFZnlBQlFRQk1CRUJCQUE4TElBQW9BZ3doQWlBQUtBSVFJUU1EUUNBQklRVUNRQ0FERFFBZ0FDQUNRUWgwUVlEK0EzRWlBallDRENBQVFRZEJDQ0FDUVlEK0EwWWJJZ00yQWhBZ0FDZ0NDQ0lCSUFBb0FnUlBEUUFnQUNBQlFRRnFOZ0lJSUFBZ0FpQUJMUUFBY2lJQ05nSU1DeUFBSUFOQkFXc2lBellDRUNBQ0lBTjJRUUZ4SUFWQkFXc2lBWFFnQkhJaEJDQUZRUUZMRFFBTElBUUxIZ0FnQUNnQ0RBUkFJQUJCQURZQ0tBTkFJQUFvQWhoQkFFb05BQXNMQzJvQkEzOGdBQVJBSUFBb0FoZ2lBUVJBSUFBb0FoQWlBZ1IvUVFBaEFRTkFJQUFvQWhnZ0FVRTBiR29vQWl3aUF3UkFJQU1RRkNBQUtBSVFJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUlZQlNBQkN4QVVDeUFBS0FJY0lnRUVRQ0FCRUJRTElBQVFGQXNMa2hVQkQzOENRQUpBSUFBb0FneEZCRUJCQVNFUElBQW9BZ1JCQUVvTkFTQUFLQUlJUVFGS0RRRU1BZ3RCQVNFTklBQW9BZ2hCQUVvTkFDQUFLQUlFUVFKSURRRUxJQUFvQWdBaUNDQU5RUVYwYWlFRUFrQWdBQ2dDRUNJSElBQW9BaFFpQ2s4TkFDQUVJQWRCQm5ScUlRRUNRQ0FLSUFkclFRTnhJZ1pGQkVBZ0J5RUNEQUVMSUFjaEFnTkFJQUVnQWYwQUJBRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRQUlBRWdBZjBBQkJEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1FRSUFGQlFHc2hBU0FDUVFGcUlRSWdBMEVCYWlJRElBWkhEUUFMQ3lBSElBcHJRWHhMRFFBRFFDQUJJQUg5QUFRQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VFQ0FCSUFIOUFBUkEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRVFDQUJJQUg5QUFSUS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFVUNBQklBSDlBQVNBQWYwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCSUFCSUFFZ0FmMEFCSkFCL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VrQUVnQVNBQi9RQUV3QUg5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3VEFBU0FCSUFIOUFBVFFBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJOQUJJQUZCZ0FKcUlRRWdBa0VFYWlJQ0lBcEhEUUFMQ3lBSUlBOUJCWFJxSVFVQ1FDQUFLQUlZSWdZZ0FDZ0NIQ0lMVHcwQUlBVWdCa0VHZEdvaEFRSkFJQXNnQm10QkEzRWlDRVVFUUNBR0lRSU1BUXRCQUNFRElBWWhBZ05BSUFFZ0FmMEFCQUQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UUFJQUVnQWYwQUJCRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dRUUlBRkJRR3NoQVNBQ1FRRnFJUUlnQTBFQmFpSURJQWhIRFFBTEN5QUdJQXRyUVh4TERRQURRQ0FCSUFIOUFBUUEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUFDQUJJQUg5QUFRUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFRUNBQklBSDlBQVJBL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VRQ0FCSUFIOUFBUlEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRVVDQUJJQUg5QUFTQUFmME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQklBQklBRWdBZjBBQkpBQi9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFa0FFZ0FTQUIvUUFFd0FIOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1RBQVNBQklBSDlBQVRRQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCTkFCSUFGQmdBSnFJUUVnQWtFRWFpSUNJQXRIRFFBTEN5QUtJQUFvQWdnaUNTQUFLQUlFSWc0Z0RXc2lBQ0FBSUFsS0d5SUlJQWdnQ2tzYklRd2dCRUVnYWlFQkFuOGdCMFVFUUNBTVJRUkFRUUFoQXlBQkRBSUxJQVFnQlAwQUJBQWdCZjBBQkFBZ0JQMEFCQ0Q5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRQUlBUWdCUDBBQkJBZ0JmMEFCQkFnQlAwQUJERDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FRUVFFaEF5QUVRZUFBYWd3QkN5QUJJQWNpQTBFR2RHb0xJUUlnQXlBTVNRUkFBMEFnQWtFZ2F5SUFJQUQ5QUFRQUlBSkJRR3I5QUFRQUlBTDlBQVFBL2VRQi9ReFZFK00rVlJQalBsVVQ0ejVWRStNKy9lWUIvZVVCL1FzRUFDQUNRUkJySWdBZ0FQMEFCQUFnQWtFd2EvMEFCQUFnQXYwQUJCRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFKQlFHc2hBaUFEUVFGcUlnTWdERWNOQUFzTElBZ2dDazhpRFVVRVFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUQ5REZVVFl6OVZFMk0vVlJOalAxVVRZei85NWdIOTVRSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFQME1WUk5qUDFVVFl6OVZFMk0vVlJOalAvM21BZjNsQWYwTEJBQUxJQXNnRGlBSklBOXJJZ0FnQUNBT1Noc2lEaUFMSUE1Skd5RUpJQVZCSUdvaEFpQUpBbjhnQmtVRVFDQUpSUVJBSUFJaEEwRUFEQUlMSUFVZ0JmMEFCQUFnQlAwQUJBQWdCZjBBQkNEOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UUFJQVVnQmYwQUJCQWdCUDBBQkJBZ0JmMEFCREQ5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRUUlBVkI0QUJxSVFOQkFRd0JDeUFDSUFaQkJuUnFJUU1nQmdzaUFFc0VRQU5BSUFOQklHc2lDQ0FJL1FBRUFDQURRVUJxL1FBRUFDQUQvUUFFQVAza0FmME1kZ1ppUDNZR1lqOTJCbUkvZGdaaVAvM21BZjNsQWYwTEJBQWdBMEVRYXlJSUlBajlBQVFBSUFOQk1HdjlBQVFBSUFQOUFBUVEvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFQUNBRFFVQnJJUU1nQUVFQmFpSUFJQWxIRFFBTEN5QUxJQTVOSWdoRkJFQWdBMEVnYXlJQUlBRDlBQVFBSUFOQlFHcjlBQVFBL1F4MkJ1SS9kZ2JpUDNZRzRqOTJCdUkvL2VZQi9lVUIvUXNFQUNBRFFSQnJJZ0FnQVAwQUJBQWdBMEV3YS8wQUJBRDlESFlHNGo5MkJ1SS9kZ2JpUDNZRzRqLzk1Z0g5NVFIOUN3UUFDd0pBSUFkRkJFQWdERVVFUUVFQUlRY01BZ3NnQkNBRS9RQUVBQ0FGL1FBRUFDQUUvUUFFSVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJBQWdCQ0FFL1FBRUVDQUYvUUFFRUNBRS9RQUVNUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkJBZ0JFSGdBR29oQVVFQklRY01BUXNnQVNBSFFRWjBhaUVCQ3lBSElBeEpCRUFEUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBQWdBZjBBQkFEOTVBSDlESzRCV1QydUFWazlyZ0ZaUGE0QldUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQUNBQi9RQUVFUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0FVRkFheUVCSUFkQkFXb2lCeUFNUncwQUN3c2dEVVVFUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBRDlESzRCMlQydUFkazlyZ0haUGE0QjJUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQVAwTXJnSFpQYTRCMlQydUFkazlyZ0haUGYzbUFmM2tBZjBMQkFBTEFrQWdCa1VFUUNBSlJRUkFRUUFoQmd3Q0N5QUZJQVg5QUFRQUlBVDlBQVFBSUFYOUFBUWcvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFQUNBRklBWDlBQVFRSUFUOUFBUVFJQVg5QUFRdy9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VFQ0FGUWVBQWFpRUNRUUVoQmd3QkN5QUNJQVpCQm5ScUlRSUxJQVlnQ1VrRVFBTkFJQUpCSUdzaUFDQUEvUUFFQUNBQ1FVQnEvUUFFQUNBQy9RQUVBUDNrQWYwTWN3YkxQM01HeXo5ekJzcy9jd2JMUC8zbUFmM2tBZjBMQkFBZ0FrRVFheUlBSUFEOUFBUUFJQUpCTUd2OUFBUUFJQUw5QUFRUS9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FDUVVCcklRSWdCa0VCYWlJR0lBbEhEUUFMQ3lBSURRQWdBa0VnYXlJQUlBRDlBQVFBSUFKQlFHcjlBQVFBL1F4ekJrdEFjd1pMUUhNR1MwQnpCa3RBL2VZQi9lUUIvUXNFQUNBQ1FSQnJJZ0FnQVAwQUJBQWdBa0V3YS8wQUJBRDlESE1HUzBCekJrdEFjd1pMUUhNR1MwRDk1Z0g5NUFIOUN3UUFDd3RkQVFSL0lBQUVRQ0FBS0FJVUlnRWdBQ2dDRUNJQ2JBUkFBMEFnQUNnQ0dDQURRUUowYWlnQ0FDSUVCRUFnQkJBVUlBQW9BaEFoQWlBQUtBSVVJUUVMSUFOQkFXb2lBeUFCSUFKc1NRMEFDd3NnQUNnQ0dCQVVJQUFRRkFzTGhRRUJBbjhDUUFKQUlBQW9BZ1FpQXlBQUtBSUFJZ1JIQkVBZ0FDZ0NDQ0VEREFFTElBQWdBMEVLYWlJRU5nSUVJQUFvQWdnZ0JFRUNkQkFiSWdORkRRRWdBQ0FETmdJSUlBQW9BZ0FoQkFzZ0F5QUVRUUowYWlBQk5nSUFJQUFnQkVFQmFqWUNBRUVCRHdzZ0FDZ0NDQkFVSUFCQ0FEY0NBQ0FDUVFGQnhpOUJBQkFUUVFBTGt3UUNCbjhDZmdKQUFrQURRQ0FBSUFCQkFXdHhEUUVnQVVGSFN3MEJJQUJCQ0NBQVFRaExJZ2NiSVFCQjZOVUJLUU1BSWdnQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUFVSC9BRTBFUUNBQlFRTjJRUUZyREFFTElBRm5JUU1nQVVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlESUFOQlAwOGJDeUlEcllnaUNVSUFVZ1JBQTBBZ0NTQUplaUlJaUNFSkFuNGdBeUFJcDJvaUEwRUVkQ0lFUWVqTkFXb29BZ0FpQWlBRVFlRE5BV29pQlVjRVFDQUNJQUFnQVJCRklnUU5CaUFDS0FJRUlnUWdBaWdDQ0NJR05nSUlJQVlnQkRZQ0JDQUNJQVUyQWdnZ0FpQUZLQUlFTmdJRUlBVWdBallDQkNBQ0tBSUVJQUkyQWdnZ0EwRUJhaUVESUFsQ0FZZ01BUXRCNk5VQlFlalZBU2tEQUVKK0lBT3RpWU0zQXdBZ0NVSUJoUXNpQ1VJQVVnMEFDMEhvMVFFcEF3QWhDQXRCUHlBSWVhZHJJUVVDUUNBSVVBUkFRUUFoQWd3QkN5QUZRUVIwSWdSQjZNMEJhaWdDQUNFQ0lBaENnSUNBZ0FSVURRQkI0d0FoQXlBQ0lBUkI0TTBCYWlJR1JnMEFBMEFnQTBVTkFTQUNJQUFnQVJCRklnUU5CQ0FEUVFGcklRTWdBaWdDQ0NJQ0lBWkhEUUFMQ3lBQklBQkJNR3BCTUNBSEcyb1FlZzBBQ3lBQ1JRMEFJQUlnQlVFRWRFSGd6UUZxSWdOR0RRQURRQ0FDSUFBZ0FSQkZJZ1FOQWlBQ0tBSUlJZ0lnQTBjTkFBc0xRUUFoQkFzZ0JBdVdJd0luZndON0FrQWdBeUFBS0FJQUlnbExEUUFnQVNBRFR3MEFJQUVnQ1U4TkFDQUVJQUFvQWdRaUNVc05BQ0FDSUFSUERRQWdBaUFKVHcwQUlBVkJIR3NoSnlBQUtBSUlJaGxCQW5RaEVTQUhRUUowSVE4Z0JrRUNkQ0VmSUFWQkJHc2hLQ0FDSUFBb0FneHVJUjRnR1NBWklBRWdHVzRpS1d3Z0FXdHFJU29nQmtFSVJ5RWpJQUloSFFOQUlBQW9BZ3dpQ1NFS0lBSWdIVVlFUUNBSklBSWdDWEJySVFvTElBb2dCQ0FkYXlJTUlBb2dERWtiSWhOQmZIRWhHeUFUUVFOeElSWWdFMEY0Y1NFcklCTkJCM0VoSkNBVFFRRnJJUm9nR1NBSlFRSjBJQXBCQW5SclFRUnFiQ0VnSUFaQkFrWWdFMEVCUm5FaExDQUpJQXBySUJsc0lTVWdKeUFQSUIwZ0Ftc2lER3dpQ1dvaEppQUpJQ2hxSVMwZ0JTQUphaUV1SUFVZ0J5QU1iRUVDZEdvaEhDQXBJU0VnQVNFWUEwQWdLaUFaSUFFZ0dFWWJJZ3dnQXlBWWF5SUpJQWtnREVzYklSQWdHU0FNYXlFSklDRkJBblFpRFNBQUtBSVlJQUFvQWhBZ0hteEJBblJxYWlnQ0FDRVNBa0FDUUNBSUJFQUNRQUpBQWtBQ1FBSkFJQklFUUNBU0lDVkJBblJxSUFsQkFuUnFJUW9nR0NBQmF5RU5JQVpCQVVZTkJDQWNJQVlnRFd4QkFuUnFJUXNnRUVFQlJnMERJQ3dOQWlBakRRRWdFRUVIVFEwQklCTkZEUWdnSmlBTklCOXNhaUFRUVFWMGFpRVZJQklnSUNBUVFRSjBhaUFNUVFKMGEyb2hJaUFRUVh4eElRMUJBQ0VTREFVTElBWkJBVWNFUUNBVFJRMElJQkJCZkhFaERTQVFRUU54SVF3Z0hDQVlJQUZySUFac1FRSjBhaUVMUVFBaEVpQVFRUUZyUVFOSklSUURRQUpBSUJCRkRRQkJBQ0VKUVFBaENrRUFJUTRnRkVVRVFBTkFJQXNnQmlBS2JFRUNkR3BCQURZQ0FDQUxJQXBCQVhJZ0JteEJBblJxUVFBMkFnQWdDeUFLUVFKeUlBWnNRUUowYWtFQU5nSUFJQXNnQ2tFRGNpQUdiRUVDZEdwQkFEWUNBQ0FLUVFScUlRb2dEa0VFYWlJT0lBMUhEUUFMQ3lBTVJRMEFBMEFnQ3lBR0lBcHNRUUowYWtFQU5nSUFJQXBCQVdvaENpQUpRUUZxSWdrZ0RFY05BQXNMSUFzZ0Qyb2hDeUFUSUJKQkFXb2lFa2NOQUFzTUNBc2dFMFVOQnlBUVFRSjBJUXdnSENBWUlBRnJRUUowYWlFTFFRQWhDU0FhUVFkUEJFQURRQ0FMUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxSVFzZ0NVRUlhaUlKSUN0SERRQUxDMEVBSVFrZ0pFVU5Cd05BSUF0QkFDQU1FQmtnRDJvaEN5QUpRUUZxSWdrZ0pFY05BQXNNQndzZ0UwVU5CaUFRUVh4eElSUWdFRUVEY1NFU1FRQWhEU0FRUVFGclFRTkpJUmNNQlF0QkFDRUpJQkJCZkhFaURnUkFBMEFnQ3lBSlFRTjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBbEJCR29pQ1NBT1NRMEFDd3NnQ1NBUVR3MEZBa0FnRUNBSmF5SVVRUTlORFFBZ0xpQU5JQjlzSWcxcUlBbEJBM1JxSUJJZ0lHb2lEaUFRSUF4clFRSjBha2tFUUNBT0lBa2dER3RCQW5ScUlBMGdMV29nRUVFRGRHcEpEUUVMSUFvZ0NVRUNkR29oRFNBSi9SSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBRDlyZ0VoTUNBSklCUkJmSEVpREdvaENVRUFJUTREUUNBTElEQkJBLzJyQVNJeC9Sc0FhaUFOSUE1QkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQU1SdzBBQ3lBTUlCUkdEUVlMUVFBaERDQUpJUTRnRUNBSmEwRURjU0lOQkVBRFFDQUxJQTVCQTNScUlBb2dEa0VDZEdvb0FnQTJBZ0FnRGtFQmFpRU9JQXhCQVdvaURDQU5SdzBBQ3dzZ0NTQVFhMEY4U3cwRkEwQWdDeUFPUVFOMGFpQUtJQTVCQW5ScUtBSUFOZ0lBSUFzZ0RrRUJhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRUNhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRURhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUE1QkJHb2lEaUFRUncwQUN3d0ZDeUFUUlEwRVFRQWhDU0FhUVFOUEJFQURRQ0FMSUFvb0FnQTJBZ0FnQ3lBUGFpSU1JQW9nRVdvaURTZ0NBRFlDQUNBTUlBOXFJZ3dnRFNBUmFpSU5LQUlBTmdJQUlBd2dEMm9pRENBTklCRnFJZzBvQWdBMkFnQWdEU0FSYWlFS0lBd2dEMm9oQ3lBSlFRUnFJZ2tnRzBjTkFBc0xRUUFoQ1NBV1JRMEVBMEFnQ3lBS0tBSUFOZ0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFRTElCd2dEVUVDZEdvaEN5QVFRUVJIQkVBZ0UwVU5CQ0FRUVFKMElRbEJBQ0VPSUJwQkEwOEVRQU5BSUFzZ0NpQUpFQllnQ2lBUmFpSU5JQkZxSWdzZ0VXb2lFaUFSYWlFS0lBOXFJQTBnQ1JBV0lBOXFJQXNnQ1JBV0lBOXFJQklnQ1JBV0lBOXFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJBTkFJQXNnQ2lBSkVCWWdDaUFSYWlFS0lBOXFJUXNnRGtFQmFpSU9JQlpIRFFBTERBUUxJQk5GRFFOQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0Qyb2lEQ0FLSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRENBUGFpSU1JQTBnRVdvaURmMEFBZ0Q5Q3dJQUlBMGdFV29oQ2lBTUlBOXFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkF3TkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFNTEEwQkJBQ0VKSUEwRVFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBWElpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBM0lpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRFVrTkFBc0xBa0FnQ1NBUVR3MEFBa0FDUUNBUUlBbHJJaFJCQjAwTkFDQUxJQWxCQlhScUlDSWdFU0FTYkdwSkJFQWdDaUFKUVFKMGFpQVZJQThnRW14cVNRMEJDeUFKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhNQ0FKSUJSQmZIRWlGMm9oREVFQUlRNERRQ0FMSURCQkJmMnJBU0l4L1JzQWFpQUtJQWtnRG1wQkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQVhSdzBBQ3lBVUlCZEhEUUVNQWdzZ0NTRU1DMEVBSVE0Z0VDQU1JZ2xyUVFOeEloUUVRQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUpRUUZxSVFrZ0RrRUJhaUlPSUJSSERRQUxDeUFNSUJCclFYeExEUUFEUUNBTElBbEJCWFJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDeUFKUVFGcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFKcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFOcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDVUVFYWlJSklCQkhEUUFMQ3lBS0lCRnFJUW9nQ3lBUGFpRUxJQk1nRWtFQmFpSVNSdzBBQ3d3Q0N5QVNSUVJBUVFFZ0FDZ0NDQ0FBS0FJTWJFRUNkQkFYSWhKRkJFQkJBQThMSUFBb0FoZ2dBQ2dDRUNBZWJFRUNkR29nRFdvZ0VqWUNBQXNnRWlBbFFRSjBhaUFKUVFKMGFpRUxJQmdnQVdzaENRSkFJQVpCQVVjRVFDQWNJQVlnQ1d4QkFuUnFJUW9nRUVFQlJ3UkFBa0FnSXcwQUlCQkJCMDBOQUNBVFJRMEZJQ1lnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM4Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBQWtBZ0VDQUpheUlYUVFkTkRRQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVNRUkFJQW9nQ1VFRmRHb2dFaUF2SUF3Z0VXeHFha2tOQVFzZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRBZ0NTQVhRWHh4SWhWcUlRMUJBQ0VPQTBBZ0N5QUpJQTVxUVFKMGFpQUtJREJCQmYyckFTSXgvUnNEYWlBS0lESDlHd0pxSUFvZ01mMGJBV29nQ2lBeC9Sc0FhdjFjQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlERDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTUNBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUncwQkRBSUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CUXNnRTBVTkJDQVFRWHh4SVJRZ0VFRURjU0VTUVFBaERTQVFRUUZyUVFOSklSY01BZ3NnRTBVTkEwRUFJUWtnR2tFRFR3UkFBMEFnQ3lBS0tBSUFOZ0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaEN5QU5JQTlxSVFvZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5Bd05BSUFzZ0NpZ0NBRFlDQUNBTElCRnFJUXNnQ2lBUGFpRUtJQWxCQVdvaUNTQVdSdzBBQ3d3REN5QWNJQWxCQW5ScUlRb2dFRUVFUndSQUlCTkZEUU1nRUVFQ2RDRUpRUUFoRGlBYVFRTlBCRUFEUUNBTElBb2dDUkFXSUFvZ0Qyb2lEU0FQYWlJTElBOXFJaElnRDJvaENpQVJhaUFOSUFrUUZpQVJhaUFMSUFrUUZpQVJhaUFTSUFrUUZpQVJhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRTURRQ0FMSUFvZ0NSQVdJQW9nRDJvaENpQVJhaUVMSUE1QkFXb2lEaUFXUncwQUN3d0RDeUFUUlEwQ1FRQWhDU0FhUVFOUEJFQURRQ0FMSUFyOUFBSUEvUXNDQUNBTElCRnFJZ3dnQ2lBUGFpSU4vUUFDQVAwTEFnQWdEQ0FSYWlJTUlBMGdEMm9pRGYwQUFnRDlDd0lBSUF3Z0VXb2lEQ0FOSUE5cUlnMzlBQUlBL1FzQ0FDQU5JQTlxSVFvZ0RDQVJhaUVMSUFsQkJHb2lDU0FiUncwQUN3dEJBQ0VKSUJaRkRRSURRQ0FMSUFyOUFBSUEvUXNDQUNBS0lBOXFJUW9nQ3lBUmFpRUxJQWxCQVdvaUNTQVdSdzBBQ3d3Q0N3TkFBa0FnRUVVTkFFRUFJUTVCQUNFSlFRQWhEQ0FYUlFSQUEwQWdDeUFKUVFKMGFpQUtJQVlnQ1d4QkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVlFRSjBhaUFLSUFZZ0ZXeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVZRUUowYWlBS0lBWWdGV3hCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlWUVFKMGFpQUtJQVlnRld4QkFuUnFLQUlBTmdJQUlBbEJCR29oQ1NBTVFRUnFJZ3dnRkVjTkFBc0xJQkpGRFFBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0NVRUJhaUVKSUE1QkFXb2lEaUFTUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBMUJBV29pRFVjTkFBc01BUXNEUUFKQUlCQkZEUUJCQUNFT1FRQWhDVUVBSVF3Z0YwVUVRQU5BSUFzZ0JpQUpiRUVDZEdvZ0NpQUpRUUowYWlnQ0FEWUNBQ0FMSUFsQkFYSWlGU0FHYkVFQ2RHb2dDaUFWUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpRlNBR2JFRUNkR29nQ2lBVlFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaUZTQUdiRUVDZEdvZ0NpQVZRUUowYWlnQ0FEWUNBQ0FKUVFScUlRa2dERUVFYWlJTUlCUkhEUUFMQ3lBU1JRMEFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQWxCQVdvaENTQU9RUUZxSWc0Z0VrY05BQXNMSUFvZ0VXb2hDaUFMSUE5cUlRc2dEVUVCYWlJTklCTkhEUUFMQ3lBaFFRRnFJU0VnRUNBWWFpSVlJQU5KRFFBTElCNUJBV29oSGlBVElCMXFJaDBnQkVrTkFBc0xRUUVMR1FFQ2ZpQUFLUU1BSWdJZ0FTa0RBQ0lEVlNBQ0lBTlRhd3UwTmdVbmZ3OStBWHNCZlFGOEl3QkIwQUJySWc4a0FDQVBRWkQvQXpZQ0tDQUFLQUtFQVNBQUtBS0FBV3doR0FKL0FrQUNRQUpBSUFBb0FnZ2lDMEVJUndSQVFRQWdDMEdBQWtjTkJCb2dEMEhaL3dNMkFpZ01BUXNnQUMwQVhFRUJjUTBBSUJoQmZIRWhEU0FQUWMwQWFpRW9JQTlCekFCcUlTa2dEMEhJQUdvaE1FR1Evd01oQ3dKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQ2dDVkNJTVJRMEFJQXdnQUNnQ1VDSU9UUTBBSUFBb0FsZ2dEa0VEZEdvcEF3QWhNaUFBSUE1QkFXbzJBbEFnQ1NBeUlBb1FNRVVFUUNBS1FRRkJteXBCQUJBVFFRQU1Ed3NnQ1NBQUtBSVFRUUlnQ2hBZFFRSkhCRUFnQ2tFQlFZTVRRUUFRRTBFQURBOExJQUFvQWhBZ0QwRW9ha0VDRUJVZ0R5Z0NLRUdRL3dOR0RRRWdDa0VCUWNRZlFRQVFFMEVBREE0TElBdEJrLzhEUmcwQkN3TkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzFBRVFDQUFRY0FBTmdJSURBSUxJQWtnQUNnQ0VFRUNJQW9RSFVFQ1J3UkFJQXBCQVVHREUwRUFFQk5CQUF3T0N5QUFLQUlRSUE5QkpHcEJBaEFWSUE4b0FpUkJBVTBFUUNBS1FRRkIreTVCQUJBVFFRQU1EZ3NDUUNBUEtBSW9RWUNCQWtjTkFDQUpLUU1JSWpKUUJINUNBQVVnTWlBSktRTTRmUXRDQUZJTkFDQUFRY0FBTmdJSURBSUxBa0FnQUNnQ0NDSVRRUkJ4UlFSQUlBOG9BaVFoQ3d3QkN5QVBLQUlrSVFzZ0FDZ0NHQ0lPUlEwQUlBdEJBbW9pRENBT1N3UkFJQXBCQVVHTndRQkJBQkFUUVFBTUR3c2dBQ0FPSUF4ck5nSVlDeUFQSUF0QkFtc2lFRFlDSkVHZ3dnRWhEQ0FQS0FJb0lRNERRQ0FNSWdzb0FnQWlHd1JBSUF0QkRHb2hEQ0FPSUJ0SERRRUxDeUFMS0FJRUlCTnhSUVJBSUFwQkFVSHdLVUVBRUJOQkFBd09Dd0pBSUFBb0FoUWdFRThFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l5VUFSK1FnQUZJRElnQ1NrRE9IMExJQkN0VXdSQUlBcEJBVUdBTFVFQUVCTkJBQXdQQ3lBQUtBSVFJQThvQWlRUUd5SU1SUVJBSUFBb0FoQVFGQ0FBUWdBM0F4QWdDa0VCUWNnbVFRQVFFMEVBREE4TElBQWdERFlDRUNBQUlBOG9BaVFpRURZQ0ZBc2dDU0FNSUJBZ0NoQWRJZ3dnRHlnQ0pFY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dDeWdDQ0NJTFJRUkFJQXBCQVVHbzJ3QkJBQkFUUVFBTURnc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQThnRHlnQ0tEWUNJQ0FLUVFGQjR1d0FJQTlCSUdvUUUwRUFEQTRMSUFrcEF6Z2hNaUFQS0FJa0lSSWdBQ2dDNEFFaUV5Z0NLQ0lRSUFBb0F1UUJJZ3hCS0d3aURtb2lGU2dDRkNJZVFRRnFJaHdnRlNnQ0hDSUxTd1JBSUJVQ2Z5QUxzME1BQU1oQ2tpSkNRd0FBZ0U5ZElFSkRBQUFBQUdCeEJFQWdRcWtNQVF0QkFBc2lDellDSENBVktBSVlJQXRCR0d3UUd5RUxJQk1vQWlnaUVDQU9haUVWSUF0RkRRTWdGU0FMTmdJWUlCVW9BaFFpSGtFQmFpRWNDeUFPSUJCcUloTW9BaGdnSGtFWWJHb2lDeUFTUVFScU5nSVFJQXNnTXFjZ0VtdEJCR3NpRHF3M0F3Z2dDeUFiT3dFQUlCTWdIRFlDRkFKQUlCdEJrUDhEUncwQUFrQWdFeWdDRUNJTVJRMEFJQk1vQWd3aUN5QVRLQUlFVHcwQUlBd2dDMEVZYkdvZ0RxMDNBd0FMSUFrcEF6aW5JQThvQWlSclFRUnJyU0l5SUFBcEF6QlhEUUFnQUNBeU53TXdDeUFBTFFCY1FRUnhCRUFnQ1NBQU5RSVlJQW9nQ1NnQ0tCRUlBQ0FBTlFJWVVnUkFJQXBCQVVHREUwRUFFQk5CQUF3UEN5QVBRWlAvQXpZQ0tBd0NDeUFKSUFBb0FoQkJBaUFLRUIxQkFrY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dBQ2dDRUNBUFFTaHFRUUlRRlNBUEtBSW9RWlAvQTBjTkFBc0xBa0FnQ1NrRENDSXlVQVIrUWdBRklESWdDU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUVMSUFBdEFGd2lDMEVFY1VVRVFDQUFLQUxrQVVHTUxHd2hEQ0FBS0FLMEFRSkFBa0FnQUNnQ09BUkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzZjaEVBd0JDeUFBS0FJWUloQkJBa2tOQVFzZ0FDQVFRUUpySWhBMkFoZ0xJQXhxSVJZZ0VFVU5BeUFKS1FNSUlqSlFCSDVDQUFVZ01pQUpLUU00ZlFzZ0VLMVRCRUFnQUNnQzBBRUVRQ0FLUVFGQnJTMUJBQkFUUVFBTUR3c2dDa0VDUWEwdFFRQVFFd3NnQUNnQ0dDSU9RWDVQQkVBZ0NrRUJRYU1MUVFBUUUwRUFEQTRMQWtBZ0ZpZ0MzQ3NpREFSQUlCWW9BdUFySWd0QmZTQU9hMHNFUUNBS1FRRkJsZ2xCQUJBVFFRQU1FQXNnRENBTElBNXFRUUpxRUJzaUN3UkFJQllnQ3pZQzNDc01CZ3NnRmlnQzNDc1FGQ0FXUVFBMkF0d3JEQUVMSUJZZ0RrRUNhaEFZSWdzMkF0d3JJQXNOQkFzZ0NrRUJRZnN2UVFBUUUwRUFEQTBMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JjREFNTElBOG9BaWdoQ3d3RUN5QVZLQUlZRUJRZ0V5Z0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVSHlIVUVBRUJOQkFBd0tDeUFBS0FMZ0FTSWJLQUlvSWhVZ0FDZ0M1QUVpRTBFb2JDSVNhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJelFnSjlJakkzQXdnZ0N5QXpJQUExQWhoOE53TVFJQUFvQWhnaERnSkFJQXdvQWhRaUhrRUJhaUljSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0pEQUFDQVQxMGdRa01BQUFBQVlIRUVRQ0JDcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQWJJUXdnR3lnQ0tDSVZJQkpxSVFzZ0RFVU5CU0FMSUF3MkFoZ2dDeWdDRkNJZVFRRnFJUndMSUF3Z0hrRVliR29pQ3lBT1FRSnFOZ0lRSUFzZ01zUTNBd2dnQzBHVC93TTdBUUFnRWlBVmFpQWNOZ0lVSUFBQ2Z5QVFCRUJCQ0NBSklCWW9BdHdySUJZb0F1QXJhaUFBS0FJWUlBb1FIU0lRSUFBb0FoaEdEUUVhUWNBQUlCQkJmMGNOQVJvZ0NrRUJRWU1UUVFBUUUwRUFEQXNMUVFBaEVFSEFBRUVJSUFBb0FoZ2JDellDQ0NBV0lCWW9BdUFySUJCcU5nTGdLd0pBSUFBdEFGeEJBWEVOQUNBQUtBSXNJZ3RCQUVnTkFDQUFLQUxrQVNJTUlBdEhEUUFnQUNnQ1RBMEFJQWtvQWh4QkFrWU5BQ0FBS0FLMEFTQU1RWXdzYkdvaUN5Z0MyQ3NpRGlBQUtBTGdBU2dDS0NBTVFTaHNhaUlNS0FJRVJ3MEFJQTRnQ3lnQzFDdEJBV29pQzAwTkFBSkFJQXdvQWhBZ0MwRVliR29wQXdBaU1pQUpLUU00VVEwQUlBa2dNaUFLRURBTkFDQUtRUUZCbXlwQkFCQVRRUUFNQ3dzZ0NTQUFLQUlRUVFJZ0NoQWRRUUpIQkVBZ0NrRUJRWU1UUVFBUUUwRUFEQXNMSUFBb0FoQWdEMEVvYWtFQ0VCVWdEeWdDS0VHUS93TkdEUUlnQ2tFQlFjUWZRUUFRRTBFQURBb0xJQUF0QUZ3aUMwRUpjVUVCUncwQUlBQWdDMEVJY2pvQVhDQUFLQUswQVNBQUtBTGtBU0lPUVl3c2JHb29BdGdyUVFGR0RRQWdDU2dDSEVFQ1JnMEFJQWtwQXpnaU1rSi9VUTBBQWtBRFFFRUJJUXdnQ1NBUFFjWUFhaUlMUVFJZ0NoQWRRUUpIRFFFZ0N5QVBRVUJyUVFJUUZTQVBLQUpBUVpEL0EwY05BVUdERXlFUUlBa2dDMEVDSUFvUUhVRUNSdzBKSUFzZ0QwRThha0VDRUJVZ0R5Z0NQRUVLUndSQVFmc3VJUkFNQ2dzZ0QwRUlOZ0k4SUFrZ0QwSEdBR3BCQ0NBS0VCMGlDeUFQS0FJOFJ3MEpJQXRCQ0VjRVFFR3FIeUVRREFvTElBOUJ4Z0JxSUE5Qk9HcEJBaEFWSURBZ0QwRTBha0VFRUJVZ0tTQVBRVEJxUVFFUUZTQW9JQTlCTEdwQkFSQVZJQTRnRHlnQ09FY0VRQ0FQS0FJMElndEJEa2tOQWlBUElBdEJER3NpQ3pZQ05DQUpJQXV0SUFvZ0NTZ0NLQkVJQUNBUE5RSTBVUTBCREFJTEN5QVBLQUl3SUE4b0FpeEhJUXdMSUFrZ01pQUtJQWtvQWl3UkRBQkZEUWdnREEwQUlBQWdBQzBBWEVIdUFYRkJFSEk2QUZ3Q1FDQVlSUTBBSUFBb0FyUUJJUlpCQUNFTElCaEJCRThFUUFOQUlCWWdDMEdNTEd4cUloNG9BdGdySWh6OUVTQVdJQXRCQVhKQmpDeHNhaUliS0FMWUt5SVYvUndCSUJZZ0MwRUNja0dNTEd4cUloSW9BdGdySWhQOUhBSWdGaUFMUVFOeVFZd3NiR29pRGlnQzJDc2lEUDBjQS8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNElrSDlHd0JCQVhFRVFDQWVRZGdyYWlBY1FRRnFOZ0lBQ3lCQi9Sc0JRUUZ4QkVBZ0cwSFlLMm9nRlVFQmFqWUNBQXNnUWYwYkFrRUJjUVJBSUJKQjJDdHFJQk5CQVdvMkFnQUxJRUg5R3dOQkFYRUVRQ0FPUWRncmFpQU1RUUZxTmdJQUN5QUxRUVJxSWdzZ0RVY05BQXNnR0NBTklndEdEUUVMQTBBZ0ZpQUxRWXdzYkdvaURpZ0MyQ3NpREFSQUlBNUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkFXb2lDeUFZUncwQUN3c2dDa0VDUWFiR0FFRUFFQk1MSUFBdEFGeEJBWEVOQUNBSklBQW9BaEJCQWlBS0VCMUJBa2NFUUFKQUlBQW9BdVFCUVFGcUlCaEhEUUFnR0VVTkFDQUFLQUswQVNFTlFRQWhDd05BSUEwZ0MwR01MR3hxSWdrb0F0UXJSUVJBSUFrb0F0Z3JSUTBJQ3lBTFFRRnFJZ3NnR0VjTkFBc0xJQXBCQVVHREUwRUFFQk5CQUF3SkN5QUFLQUlRSUE5QktHcEJBaEFWQ3lBUEtBSW9JUXNnQUMwQVhFRUJjUTBBSUF0QjJmOERSdzBCQ3dzZ0MwSFovd05IRFFJZ0FDZ0NDRUdBQWtZTkFpQUFRWUFDTmdJSUlBQkJBRFlDNUFFTUFnc2dDeWdDR0JBVUlCc29BaWdnRTBFb2JHb2lBRUVBTmdJY0lBQkNBRGNDRkNBS1FRRkI4aDFCQUJBVFFRQU1CQXNnRHlBTE5nSVFJQXBCQkVIWDFRQWdEMEVRYWhBVElBQWdDellDNUFFZ0QwSFovd00yQWlnZ0FFR0FBallDQ0FzZ0FDZ0M1QUVoQ3lBQUtBSzBBU0VKQWtBQ1FDQUFMUUJjUVFGeERRQUNRQUpBSUFzZ0dFOE5BQ0FKSUF0QmpDeHNhaUVRQTBBZ0VDZ0MzQ3NOQVNBQUlBdEJBV29pQ3pZQzVBRWdFRUdNTEdvaEVDQUxJQmhIRFFBTERBRUxJQXNnR0VjTkFRc2dDRUVBTmdJQURBRUxBa0FDUUNBS1FRRWdDU0FMUVl3c2JHb2lFaWdDdENnRWYwR1FOUVVnRWkwQWlDeEJBbkZGRFFJQ1FDQVNLQUtvS0NJT1JRUkFRUUFoREF3QkN5QVNLQUtzS0NFSlFRQWhERUVBSVFzZ0RrRUVUd1JBSUE1QmZIRWhDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCUVFBaEVBTkFJQWtnRUVFRGRHb2lEVUVjYWlBTlFSUnFJQTFCREdvZ0RmMWNBZ1Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdRZjJ1QVNGQklCQkJCR29pRUNBTFJ3MEFDeUJCSUVFZ1FmME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMnVBU0pCSUVFZ1FmME5CQVVHQndBQkFnTUFBUUlEQUFFQ0EvMnVBZjBiQUNFTUlBc2dEa1lOQVFzRFFDQUpJQXRCQTNScUtBSUVJQXhxSVF3Z0MwRUJhaUlMSUE1SERRQUxDeUFTSUF3UUdDSUpOZ0swS0NBSkRRRkJoQjhMUVFBUUV5QUtRUUZCMWo1QkFCQVRRUUFNQlFzZ0VpQU1OZ0s4S0NBU0tBS3NLQ0VKSUJJb0FxZ29JZ3dFUUVFQUlSQkJBQ0VMQTBBZ0NTQUxRUU4wSWhOcUlnNG9BZ0FpRFFSQUlCSW9BclFvSUJCcUlBMGdEaWdDQkJBV0dpQVNLQUtzS0NBVGFpSUpLQUlFSUFrb0FnQVFGQ0FTS0FLc0tDSUpJQk5xUWdBM0FnQWdFR29oRUNBU0tBS29LQ0VNQ3lBTFFRRnFJZ3NnREVrTkFBc0xJQkpCQURZQ3FDZ2dDUkFVSUJKQkFEWUNyQ2dnRWlBU0tBSzBLRFlDc0NnZ0VpQVNLQUs4S0RZQ3VDZ0xBbjhnQUNnQzZBRWlDeWdDSENJaUtBSk1JQUFvQXVRQklnbEJqQ3hzYWlnQzBDc2hHaUFMS0FJWUloTW9BaGdoSXlBTEtBSVVLQUlBSWgwZ0lpZ0NCQ0FpS0FJTUlnc2dDU0FKSUNJb0FoZ2lDVzRpRFNBSmJHdHNhaUlPSUJNb0FnQWlDU0FKSUE1Skd5SU1OZ0lBSUIxQmZ5QUxJQTVxSWdrZ0NTQU9TUnNpQ3lBVEtBSUlJZ2tnQ1NBTFN4c2lDVFlDQ0FKQUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFmVXpRUUFRRXd3QkN5QWRLQUlVSVJFZ0hTQWlLQUlJSUEwZ0lpZ0NFQ0lMYkdvaURDQVRLQUlFSWdrZ0NTQU1TUnNpRFRZQ0JDQWRRWDhnQ3lBTWFpSUpJQWtnREVrYklnc2dFeWdDRENJSklBa2dDMHNiSWdrMkFnd2dDU0FOU2lBTlFRQk9jVVVFUUNBS1FRRkJ6ek5CQUJBVERBRUxBa0FnR2lnQ0JBUkFJQjBvQWhBTkFVRUJEQU1MSUFwQkFVSEpLVUVBRUJNTUFRc0NRQUpBQTBBZ0kwRUFOZ0lrSUJFZ0l6UUNBQ0kyUWdGOUlqSWdIVFFDQUh3Z05uOCtBZ0FnRVNBak5BSUVJalZDQVgwaU15QWROQUlFZkNBMWZ6NENCQ0FSSURJZ0hUUUNDSHdnTm44K0FnZ2dIVFFDRENFeUlCRWdNVFlDRUNBUklESWdNM3dnTlg4K0Fnd2dFU0FhS0FJRUlnczJBaFFnRVVFQklBc2dJaWdDVUNJSmF5QUpJQXRMR3pZQ0dDQVJLQUkwRUJRZ0VVRUFOZ0pFSUJIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3STBJQXRCbUFGc0lRMENRQ0FSS0FJY0lnbEZCRUFnRVNBTkVCZ2lDVFlDSENBSlJRMEZJQkVnRFRZQ0lDQUpRUUFnRFJBWkdnd0JDeUFOSUJFb0FpQk5EUUFnQ1NBTkVCc2lDMFVFUUNBS1FRRkI3UmRCQUJBVElCRW9BaHdRRkNBUlFnQTNBaHdNQlFzZ0VTQUxOZ0ljSUFzZ0VTZ0NJQ0lKYWtFQUlBMGdDV3NRR1JvZ0VTQU5OZ0lnQ3lBUktBSVVJZ3NFUUNBYVFiQUhhaUV3SUJwQnJBWnFJUjRnR2tFY2FpRXFJQkVvQWh3aEdVRUFJU1FEUUNBWlFuOGdDMEVCYXlJSnJTSTBoa0ovaFNJeklCRTBBZ0I4SURTSHB5SVZOZ0lBSUJrZ015QVJOQUlFZkNBMGg2Y2lFallDQkNBWklETWdFVFFDQ0h3Z05JY2lNcWNpRXpZQ0NDQVpJRE1nRVRRQ0RId2dOSWNpTmFjaURqWUNEQ0F5eEVJQklCNGdKRUVDZENJTmFpZ0NBQ0lmclNJeWhueENBWDBnTW9lbklCOTBJZ3hCQUVnTkJDQTF4RUovSUEwZ01Hb29BZ0FpSUswaU1vWkNmNFY4SURLSHB5QWdkQ0lOUVFCSURRUWdHU0FOUVg4Z0lIUWdFbkVpSzJzZ0lIVkJBQ0FPSUJKSEd5SU5OZ0lVSUJrZ0RFRi9JQjkwSUJWeElpeHJJQjkxUVFBZ0V5QVZSeHNpRERZQ0VBSkFJQXhGRFFBZ0RLMGdEYTErUWlDSVVBMEFEQVFMSUF3Z0RXd2lMVUhuekprelR3MERJQzFCS0d3aElTQVpJQ1FFZnlBZ1FRRnJJU0FnSDBFQmF5RWZJQ3VzUWdGOFFnR0lweUVySUN5c1FnRjhRZ0dJcHlFc1FRTUZRUUVMTmdJWUlCbEJIR29oRkNBclFRRWdJSFJxSVJ3Z0xFRUJJQjkwYWlFYlFnRWdDNjBpTjRZaE9FSi9JQm9vQWd3aUN5QWdJQXNnSUVrYklpV3RJajJHUW4rRklUNUNmeUFhS0FJSUlnc2dIeUFMSUI5Skd5SW1yU0kvaGtKL2hTRkFRUUFoRUFOQUFuNGdKRVVFUUNBeklCRTBBZ1I4SURTSElUa2dNeUFSTkFJQWZDQTBoeUU2UVFBaEN5QXpJakloT3lBMERBRUxJRGdnRUVFQmFpSUxRUUYyclNBMGhrSi9oWHdpT3lBUk5BSUVmQ0EzaHlFNUlEZ2dDMEVCY2EwZ05JWkNmNFY4SWpJZ0VUUUNBSHdnTjRjaE9pQTNDeUU4SUJFMEFnZ2hOaUFSTkFJTUlUVWdGQ0E1UGdJRUlCUWdPajRDQUNBVUlBczJBaEFnRkNBMUlEdDhJRHlIUGdJTUlCUWdNaUEyZkNBOGh6NENDRUVBSVEwQ1FDQWFLQUlVUlEwQUlBdEZEUUJCQWtFQklBdEJBMFliSVEwTFJBQUFBQUFBQVBBL0lVTUNRQ0FqS0FJWUlBMXFJQ29vQWdBaURXc2lDMEdBQ0U0RVFFUUFBQUFBQUFEZ2Z5RkRJQXRCL3c5SkJFQWdDMEgvQjJzaEN3d0NDMFFBQUFBQUFBRHdmeUZEUWYwWElBc2dDMEg5RjA4YlFmNFBheUVMREFFTElBdEJnWGhLRFFCRUFBQUFBQUFBWUFNaFF5QUxRYmh3U3dSQUlBdEJ5UWRxSVFzTUFRdEVBQUFBQUFBQUFBQWhRMEh3YUNBTElBdEI4R2hORzBHU0Qyb2hDd3NnRkNBcUtBSUV0MFFBQUFBQUFBQkFQNkpFQUFBQUFBQUE4RCtnSUVNZ0MwSC9CMnF0UWpTR3Y2S2l0amdDSUNBVUlBMGdHaWdDcEFacVFRRnJOZ0ljSUJRb0FoUWhDd0pBQWtBQ1FDQXRSUTBBSUFzTkFDQVVJQ0VRR0NJTE5nSVVJQXRGQkVBZ0NrRUJRWUVXUVFBUUV3d0tDeUFMUVFBZ0lSQVpHaUFVSUNFMkFoZ01BUXNnSVNBVUtBSVlTd1JBSUFzZ0lSQWJJZzFGQkVBZ0NrRUJRWUVXUVFBUUV5QVVLQUlVRUJRZ0ZFSUFOd0lVREFvTElCUWdEVFlDRkNBTklCUW9BaGdpQzJwQkFDQWhJQXRyRUJrYUlCUWdJVFlDR0FzZ0xVVU5BUXNnRkNnQ0ZDRUxRUUFoTGdOQUlBc2dMaUF1SUJrb0FoQWlEVzRpRXlBTmJHc2dIM1FpRGlBc2FpSU1JQlFvQWdBaURTQU1JQTFLR3lJVk5nSUFJQXNnRXlBZ2RDSVNJQ3RxSWd3Z0ZDZ0NCQ0lOSUF3Z0RVb2JJaE0yQWdRZ0N5QU9JQnRxSWd3Z0ZDZ0NDQ0lOSUF3Z0RVZ2JJZzQyQWdnZ0N5QVNJQnhxSWd3Z0ZDZ0NEQ0lOSUF3Z0RVZ2JJZzAyQWd3Z0N5QkFJQTZzZkNBL2g2Y2dGU0FtZFNJb2F5QW1kQ0FtZFNJTU5nSVFJQXNnUGlBTnJId2dQWWVuSUJNZ0pYVWlLV3NnSlhRZ0pYVWlEVFlDRkNBTUlBMXNJaSt0UXNRQWZrSWdpRUlBVWdSQUlBcEJBVUhTRmtFQUVCTU1DUXNnTDBIRUFHd2hEZ0pBQWtBQ1FDQUxLQUlZSWcwTkFDQXZSUTBBSUFzZ0RoQVlJZzAyQWhnZ0RVVU5DeUFOUVFBZ0RoQVpHZ3dCQ3lBT0lBc29BaHhORFFFZ0RTQU9FQnNpREVVRVFDQUxLQUlZRUJRZ0MwSUFOd0lZSUFwQkFVSFFFMEVBRUJNTUN3c2dDeUFNTmdJWUlBd2dDeWdDSENJTmFrRUFJQTRnRFdzUUdSb0xJQXNnRGpZQ0hBc2dDeWdDRkNFT0lBc29BaEFoRENBTEFuOGdDeWdDSUNJTlJRUkFJQXdnRGlBS0VHd01BUXNnRFNBTUlBNGdDaEJxQ3pZQ0lDQUxLQUlVSVE0Z0N5Z0NFQ0VNSUFzQ2Z5QUxLQUlrSWcxRkJFQWdEQ0FPSUFvUWJBd0JDeUFOSUF3Z0RpQUtFR29MTmdJa0lDOEVRQ0FwUVFGcUlSSWdLRUVCYWlFVFFRQWhKd05BSUNjZ0N5Z0NFQ0lPYmlFWUFrQWdDeWdDR0NBblFjUUFiR29pRnlnQ0FDSVZCRUFnRnlnQ09DRU1JQmNvQWdRaERTQVhLQUl3SVJZZ0Z5Z0NQQkFVSUJmOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmRCUUd0QkFEWUNBQ0FYUWdBM0FqZ2dGLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWhnZ0YvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBZ2dnRnlBVk5nSUFJQmNnRmpZQ01DQVdCRUFnRlVFQUlCWkJHR3dRR1JvTElCY2dERFlDT0NBWElBMDJBZ1FNQVFzZ0YwRUtRUmdRRnlJTk5nSUFJQTFGRFFzZ0YwRUtOZ0l3Q3lBWElDY2dEaUFZYkdzaURpQW9haUFtZENJTUlBc29BZ0FpRFNBTUlBMUtHellDQ0NBWElCZ2dLV29nSlhRaURDQUxLQUlFSWcwZ0RDQU5TaHMyQWd3Z0Z5QU9JQk5xSUNaMElnd2dDeWdDQ0NJTklBd2dEVWdiTmdJUUlCY2dFaUFZYWlBbGRDSU1JQXNvQWd3aURTQU1JQTFJR3pZQ0ZDQW5RUUZxSWljZ0wwY05BQXNMSUF0QktHb2hDeUF1UVFGcUlpNGdMVWNOQUFzTElDcEJDR29oS2lBVVFTUnFJUlFnRUVFQmFpSVFJQmtvQWhoSkRRQUxJQmxCbUFGcUlSa2dDU0VMSUNSQkFXb2lKQ0FSS0FJVVNRMEFDd3NnSTBFMGFpRWpJQkZCekFCcUlSRWdHa0c0Q0dvaEdpQXhRUUZxSWpFZ0hTZ0NFRWtOQUF0QkFRd0RDeUFLUVFGQmdSZEJBQkFUREFFTElBcEJBVUdnRWtFQUVCTUxRUUFMUlFSQUlBcEJBVUd2SEVFQUVCTkJBQXdFQ3lBQUtBTGtBU0VKSUE4Z0FDZ0NnQUVnQUNnQ2hBRnNOZ0lFSUE4Z0NVRUJhallDQUNBS1FRUkJqTndBSUE4UUV5QUJJQUFvQXVRQk5nSUFJQWhCQVRZQ0FDQUNCRUFnQWlBQUtBTG9BVUVBRUYwaUFUWUNBRUVBSUFGQmYwWU5CQm9MSUFNZ0FDZ0M2QUVvQWhRb0FnQWlBU2dDQURZQ0FDQUVJQUVvQWdRMkFnQWdCU0FCS0FJSU5nSUFJQVlnQVNnQ0REWUNBQ0FISUFFb0FoQTJBZ0FnQUNBQUtBSUlRWUFCY2pZQ0NBdEJBUXdDQ3lBS1FRRWdFRUVBRUJNTElBcEJBVUhSSEVFQUVCTkJBQXNnRDBIUUFHb2tBQXZ1RUFJTWZ3SitBa0FnQUNnQ0lDSUNEUUFDUUNBQUtBSVFJZ2xCQlVvRVFDQUpJUUlNQVFzQ1FBSkFJQUFvQWhRaUJrRUZUZ1JBSUFBb0FnQWlBU2dDQUNFQ0lBQWdBVUVFYWpZQ0FDQUdRUVJySVFjTUFRc2dCa0VBVEFSQVFYOGhBZ3dDQ3lBQUtBSUFJUUVDZnlBR1FRRkdCRUJCZnlFRlFRQU1BUXRCZnlFRklBWkJBV3NpQkVFQmNRSkFJQVpCQWtZRVFFRUFJUUlnQmlFRURBRUxJQVJCZm5FaEMwRUFJUUlnQVNFRElBWWhCQU5BSUFBZ0EwRUJhallDQUNBRExRQUFJUXdnQUNBRFFRSnFJZ0UyQWdBZ0FDQUVRUUZyTmdJVUlBTXRBQUVoQXlBQUlBUkJBbXNpQkRZQ0ZDQUZRZjhCSUFKMFFYOXpjU0FNSUFKMGNrR0EvZ01nQW5SQmYzTnhJQU1nQWtFSWNuUnlJUVVnQWtFUWFpRUNJQUVoQXlBSVFRSnFJZ2dnQzBjTkFBc0xCRUFnQUNBQlFRRnFJZ00yQWdBZ0FTMEFBQ0VCSUFBZ0JFRUJhellDRkNBRlFmOEJJQUowUVg5emNTQUJJQUowY2lFRklBTWhBUXNnQmtFRGRFRUlhd3NoQWlBQUlBRkJBV28yQWdBZ0JVSC9BU0FDZEVGL2MzRWdBUzBBQUVFUGNpQUNkSEloQWdzZ0FDQUhOZ0lVQ3lBQUtBSVlJUUVnQUNBQ1FSaDJJZ1JCL3dGR05nSVlJQUFnQ1NBQ1FSQjJRZjhCY1NJRFFmOEJSaUlHSUFKQkNIWkIvd0Z4SWdWQi93RkdJZ2NnQVNBQ1FmOEJjU0lJUWY4QlJpSUthbXBxSWdGclFTQnFJZ0kyQWhBZ0FDQUFLUU1JSUFoQkIwRUlJQW9iZENBRmNrRUhRUWdnQnh0MElBTnlRUWRCQ0NBR0czUWdCSEt0SUFFZ0NXdEJJR3F0aG9RM0F3Z2dBa0VHVGcwQVFRQWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQWF3Z0FDa0RLRUpBZzRRM0F5Z2dBa0VHU0FSQVFRRWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC9RSU1nQWF4Q0I0YUVOd01vSUFKQkJrZ0VRRUVDSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhBd0orSUFBcEF3Z2lEVUlBVXdSQVFRd2dBVUVCYWlBQlFRdE9HeUVFSUFKQkFXc2hBa0YvSUFOMFFYOXpRUUYwSVFGQ0FRd0JDeUFCUVFGclFRQWdBVUVCU2hzaEJDQU5RVDhnQTJ1dGlLZEJmeUFEZEVGL2MzRkJBWFJCQVhJaEFTQUNJQU5CQVdvaUEyc2hBaUFEclFzaERpQUFJQUkyQWhBZ0FDQUVOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy85QWd5QUJyRUlPaG9RM0F5Z2dBa0VHU0FSQVFRTWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLzlBZ3lBQnJFSVZob1EzQXlnZ0FrRUdTQVJBUVFRaEFnd0JDeUFBS0FJY0lnRkJBblJCNEtFQmFpZ0NBQ0VEQW40Z0FDa0RDQ0lOUWdCVEJFQkJEQ0FCUVFGcUlBRkJDMDRiSVFRZ0FrRUJheUVDUVg4Z0EzUkJmM05CQVhRaEFVSUJEQUVMSUFGQkFXdEJBQ0FCUVFGS0d5RUVJQTFCUHlBRGE2MklwMEYvSUFOMFFYOXpjVUVCZEVFQmNpRUJJQUlnQTBFQmFpSURheUVDSUFPdEN5RU9JQUFnQWpZQ0VDQUFJQVEyQWh3Z0FDQU5JQTZHTndNSUlBQWdBQ2tES0VMLy8vLy9RSU1nQWF4Q0hJYUVOd01vSUFKQkJrZ0VRRUVGSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhCQUovSUFBcEF3Z2lEVUlBVXdSQUlBSkJBV3NoQTBGL0lBUjBRWDl6UVFGMElRVkNBU0VPUVF3Z0FVRUJhaUFCUVF0T0d3d0JDeUFOUVQ4Z0JHdXRpS2RCZnlBRWRFRi9jM0ZCQVhSQkFYSWhCU0FDSUFSQkFXb2lCR3NoQXlBRXJTRU9JQUZCQVd0QkFDQUJRUUZLR3dzaEFTQUFJQU0yQWhBZ0FDQUJOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy8vLy8vOUFneUFGclVJamhvUTNBeWhCQmlFQ0lBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFRUFuOGdBQ2tEQ0NJTlFnQlRCRUFnQTBFQmF5RUNRWDhnQkhSQmYzTkJBWFFoQlVJQklRNUJEQ0FCUVFGcUlBRkJDMDRiREFFTElBMUJQeUFFYTYySXAwRi9JQVIwUVg5emNVRUJkRUVCY2lFRklBTWdCRUVCYWlJRWF5RUNJQVN0SVE0Z0FVRUJhMEVBSUFGQkFVb2JDeUVCSUFBZ0FqWUNFQ0FBSUFFMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy85QWd5QUZyVUlxaG9RM0F5Z2dBa0VHU0FSQVFRY2hBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy8vL1FJTWdBYTFDTVlhRU53TW9RUWdoQWdzZ0FDQUNRUUZyTmdJZ0lBQWdBQ2tES0NJT1FnZUlOd01vSUE2blFmOEFjUXNpQVFGL0lBQUVRQ0FBS0FJTUlnRUVRQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUUxDNElCQWdGK0EzOENRQ0FBUW9DQWdJQVFWQVJBSUFBaEFnd0JDd05BSUFGQkFXc2lBU0FBUWdxQUlnSkM5Z0YrSUFCOHAwRXdjam9BQUNBQVF2Ly8vLytmQVZZZ0FpRUFEUUFMQ3lBQ1FnQlNCRUFnQXFjaEF3TkFJQUZCQVdzaUFTQURRUXB1SWdSQjlnRnNJQU5xUVRCeU9nQUFJQU5CQ1VzZ0JDRUREUUFMQ3lBQkMwOEJBWDhnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFKRkJFQWdBQ0FDUVFSeU5nSkVRUUFQQ3lBQUlBRTNBemdnQUNBQ1FYdHhOZ0pFUVFFTDN0NEJCSEIvQm5zSWZnRjlJd0JCRUdzaVRDUUFBa0FnQUMwQUNFR0FBWEZGRFFBZ0FTQUFLQUxrQVVjTkFDQUFLQUswQVNBQlFZd3NiR29pVFNnQzNDc2lGMFVFUUNCTkVEUU1BUXNnQUNnQzRBRWFJQUFvQXVnQklSc2dBQ2dDWkNJSFJRUkFJQUFvQW1BaEJ3c2dCeWdDQUNFR0lBY29BZ1FoQ3lBSEtBSUlJUWtnQnlnQ0RDRVBJQUFvQWp3aEJ5QUFLQUpBSVE0Z1RTZ0M0Q3NoQ0NNQVFSQnJJajhrQUNBYklBRTJBaVFnR3lnQ0hDZ0NUQ0VNSUJ0QkFUWUNRQ0FiSUE4MkFqd2dHeUFKTmdJNElCc2dDellDTkNBYklBWTJBakFnR3lBTUlBRkJqQ3hzYWpZQ0lDQWJLQUpFRUJSQkFDRUxJQnRCQURZQ1JBSkFJQWNFUUVFRUlCc29BaGdvQWhBUUZ5SUxSUVJBREFJTElBZEJCRThFUUNBSFFYeHhJUWxCQUNFQkEwQWdDeUFPSUNKQkFuUnFJZ1lvQWdCQkFuUnFRUUUyQWdBZ0N5QUdLQUlFUVFKMGFrRUJOZ0lBSUFzZ0JpZ0NDRUVDZEdwQkFUWUNBQ0FMSUFZb0FneEJBblJxUVFFMkFnQWdJa0VFYWlFaUlBRkJCR29pQVNBSlJ3MEFDd3NnQjBFRGNTSUJCRUFEUUNBTElBNGdJa0VDZEdvb0FnQkJBblJxUVFFMkFnQWdJa0VCYWlFaUlCbEJBV29pR1NBQlJ3MEFDd3NnR3lBTE5nSkVDd0pBQWtBZ0d5Z0NHQ0lHS0FJUUlnNUZEUUJCQUNFaUFrQURRQUpBSUFzRVFDQUxJQ0pCQW5ScUtBSUFSUTBCQ3lBR0tBSVlJQ0pCTkd4cUlnRTFBZ1FpZkVJQmZTS0FBU0FiTlFJOGZDQjhnQ0dCQVNBQk5RSUFJbjFDQVgwaWZpQWJOUUk0ZkNCOWdDR0NBU0NBQVNBYk5RSTBmQ0I4Z0NGOElCc29BaFFvQWdBb0FoUWdJa0hNQUd4cUlnRW9BaFFnQVNnQ0dHc2lCMEVmU3cwQUFrQWdmaUFiTlFJd2ZDQjlnS2NpQ1NBQktBSUFheUlQUVFBZ0NTQVBUeHNnQjNZTkFDQjhweUlKSUFFb0FnUnJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ2dpQ1NDQ0FhZHJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ3dpQVNDQkFhZHJJZ2xCQUNBQklBbFBHeUFIZGtVTkFRc2dHMEVBTmdKQURBSUxJQ0pCQVdvaUlpQU9SdzBBQ3lBYktBSkFSUTBBUVFBaEdRTkFJQnNvQWhRb0FnQW9BaFFnR1VITUFHeHFJZ0VvQWh3Z0FTZ0NHRUdZQVd4cUlnZEJsQUZyS0FJQUlRWWdCMEdNQVdzb0FnQWhDeUFIUVpnQmF5Z0NBQ0VPSUFkQmtBRnJLQUlBSVFrQ1FDQWJLQUpFSWdjRVFDQUhJQmxCQW5ScUtBSUFSUTBCQ3lBTElBWnJJUWNnQ1NBT2F5RU9Ba0FnQmlBTFJnMEFJQWV0SUE2dGZrSWdpRkFOQUVFQUlTSWdCVUVCUVlFWFFRQVFFd3dHQ3lBSElBNXNJZ2RCZ0lDQWdBUlBCRUJCQUNFaUlBVkJBVUdCRjBFQUVCTU1CZ3NnQVNBSFFRSjBJZ2MyQWl3Q1FBSkFBa0FnQVNnQ0pDSUdCRUFnQnlBQktBSXdUUTBFSUFFb0FpZ05BUXNnQVNBSEVCd2lCellDSkNBSFFRRWdBU2dDTENJSEcwVU5BU0FCUVFFMkFpZ2dBU0FITmdJd0RBTUxJQVlRRkNBQklBRW9BaXdRSENJSE5nSWtJQWNOQVNBQlFRQTJBakFnQVVJQU53SW9DMEVBSVNJZ0JVRUJRWUVYUVFBUUV3d0dDeUFCUVFFMkFpZ2dBU0FCS0FJc05nSXdDeUFaUVFGcUloa2dHeWdDR0NJR0tBSVFTUTBBQ3d3QkN5QUdLQUlZSVJrZ0d5Z0NGQ2dDQUNnQ0ZDRU5RUUFoQVFOQUFrQWdDd1JBSUFzZ0FVRUNkR29vQWdCRkRRRUxJQTBnQVVITUFHeHFJZ2NnQnlnQ0FDSUpJQmtnQVVFMGJHb2lEelVDQUNKOFFnRjlJb0FCSUJzMUFqQjhJSHlBcHlJTUlBa2dERXNiSWdrMkFqZ2dCeUFIS0FJRUlnd2dEelVDQkNKOVFnRjlJb0VCSUJzMUFqUjhJSDJBcHlJUElBd2dEMHNiSWc4MkFqd2dCeUFIS0FJSUlnd2dnQUVnR3pVQ09Id2dmSUNuSWdvZ0NpQU1TeHNpRERZQ1FDQUhJQWNvQWd3aUNpQ0JBU0FiTlFJOGZDQjlnS2NpRlNBS0lCVkpHeUlLTmdKRUlBa2dERXNOQXlBS0lBOUpEUU1nQnlnQ0ZDSVZSUTBBSUFxdFFnRjlJWUVCSUF5dFFnRjlJWDRnRDYxQ0FYMGhnZ0VnQ2ExQ0FYMGhnd0VnRmEwaGZ5QUhLQUljSVFsQ0FDRjlBMEFnQ1NCOXB5SVBRWmdCYkdvaUIwSUJJQlVnRDBGL2MycXRJbnlHSW9BQklJRUJmQ0I4aUQ0Q2xBRWdCeUIrSUlBQmZDQjhpRDRDa0FFZ0J5Q0FBU0NDQVh3Z2ZJZytBb3dCSUFjZ2dBRWdnd0Y4SUh5SVBnS0lBU0I5UWdGOEluMGdmMUlOQUFzTElBRkJBV29pQVNBT1J3MEFDd3RCQUNFaUlEOUJBRFlDQ0NBYktBSWNJUUZCQVVFSUVCY2lJd1JBSUNNZ0FUWUNCQ0FqSUFZMkFnQUxJQ05GRFFFZ0d5Z0NKQ0VVSUJzb0FoUW9BZ0FoSHlNQVFaQUJheUlRSkFBZ0ZFR01MR3dpQVNBaktBSUVJZ2tvQWt4cUloNG9BcVFESVM0Q2Z5QWpLQUlBSWlnaEZTQUZJVE5CQUNFT0l3QkJJR3NpRFNRQUlBRWdDU2dDVEdvaUdDZ0NwQU1oSFFKQUlCVW9BaEFpRmtHUUJHd1FHQ0lQUlEwQUFrQWdGa0VDZEJBWUlndEZCRUFnRHlFTERBRUxBa0FDUUFKL0lBa29Ba3dnRkVHTUxHeHFJZ29vQXFRRElobEJBV29pQVVId0FSQVhJZ2NFUUFKQUlBRUVRQ0FWS0FJUUlRd2dCeUVCQTBBZ0FTQXpOZ0xzQVNBQklBeEJFQkFYSWdZMkFzZ0JJQVpGRFFJZ0FTQVZLQUlRSWhvMkFzUUJRUUFoQmtFQUlRd2dHZ1JBQTBBZ0FTZ0N5QUVnQmtFRWRHb2lEQ0FLS0FMUUt5QUdRYmdJYkdvaUdpZ0NCRUVRRUJjaUpqWUNEQ0FtUlEwRUlBd2dHaWdDQkRZQ0NDQUdRUUZxSWdZZ0ZTZ0NFQ0lNU1EwQUN3c2dBVUh3QVdvaEFTQVRJQmxHSUJOQkFXb2hFMFVOQUFzTElBY01BZ3NnQnlnQ0JDSUJCRUFnQVJBVUlBZEJBRFlDQkFzZ0J5RUJRUUFoQ2dOQUlBRW9Bc2dCSWdZRVFFRUFJUXdnQVNnQ3hBRWlFd1IvQTBBZ0JpZ0NEQ0lhQkVBZ0doQVVJQVpCQURZQ0RDQUJLQUxFQVNFVEN5QUdRUkJxSVFZZ0RFRUJhaUlNSUJOSkRRQUxJQUVvQXNnQkJTQUdDeEFVSUFGQkFEWUN5QUVMSUFGQjhBRnFJUUVnQ2lBWlJpQUtRUUZxSVFwRkRRQUxJQWNRRkF0QkFBc2lCd1JBSUJaRkRRSkJBQ0VLSUE4aEJpQVdRUU5ORFFFZ0JpQVdRWHh4SWdwQmtBUnNhaUVHSUE4aEFRTkFJQXNnRVVFQ2RHb2dBZjBSL1F3QUFBQUFFQUlBQUNBRUFBQXdCZ0FBL2E0Qi9Rc0NBQ0FCUWNBUWFpRUJJQkZCQkdvaUVTQUtSdzBBQ3lBS0lCWkhEUUVNQWdzZ0R4QVVEQUlMQTBBZ0N5QUtRUUowYWlBR05nSUFJQVpCa0FScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBTElSbEJBQ0VUSUFrb0Frd2dGRUdNTEd4cUtBTFFLeUVCSUJVb0FoZ2hDaUFOSUFrb0FnUWdDU2dDRENBVUlCUWdDU2dDR0NJR2JpSUxJQVpzYTJ4cUlnWWdGU2dDQUNJTUlBWWdERXNiTmdJVUlBMUJmeUFHSUFrb0FneHFJZ3dnQmlBTVN4c2lCaUFWS0FJSUlnd2dCaUFNU1JzMkFoQWdEU0FKS0FJSUlBa29BaEFnQzJ4cUlnWWdGU2dDQkNJTElBWWdDMHNiTmdJTUlBMUJmeUFHSUFrb0FoQnFJZ3NnQmlBTFN4c2lCaUFWS0FJTUlnc2dCaUFMU1JzMkFnZ2dEVUVBTmdJWUlBMUJBRFlDSENBTlFmLy8vLzhITmdJRUlBMUIvLy8vL3djMkFnQWdGU2dDRUFSQUEwQWdHUVIvSUJrZ0UwRUNkR29vQWdBRlFRQUxJUXNnQ2pVQ0JDSjhRZ0Y5SW9BQklBMDFBZ2g4SUh5QUlZRUJJQW8xQWdBaWZVSUJmU0orSUEwMUFoQjhJSDJBSVlJQklJQUJJQTAxQWd4OElIeUFJWHdnZmlBTk5RSVVmQ0I5Z0NGOUlBRW9BZ1FpQ1NBTktBSWNTd1JBSUEwZ0NUWUNIQ0FCS0FJRUlRa0xJQWtFUUNBQlFiQUhhaUVhSUFGQnJBWnFJU1lnZ1FGQy8vLy8vdytEUWdGOUlZQUJJSUlCUXYvLy8vOFBnMElCZlNHQkFTQjhRdi8vLy84UGcwSUJmU0YrSUgxQy8vLy8vdytEUWdGOUlZSUJRUUFoRkFOQUlCb2dGRUVDZENJTWFpZ0NBQ0VHSUF3Z0ptb29BZ0FoREVFQUlSRWdDd1JBSUFzZ0JqWUNCQ0FMSUF3MkFnQWdDMEVJYWlFUkN3SkFJQXdnQ1VFQmF5SUphaUlMUVI5TERRQWdDaWdDQUNJa1FYOGdDM1pMRFFBZ0RTQU5LQUlFSWl3Z0pDQUxkQ0lMSUFzZ0xFc2JOZ0lFQ3dKQUlBWWdDV29pQzBFZlN3MEFJQW9vQWdRaUpFRi9JQXQyU3cwQUlBMGdEU2dDQUNJc0lDUWdDM1FpQ3lBTElDeExHellDQUF0QkFDRUxRZ0VnQ2EwaWZJWWlmU0NBQVh3Z2ZJZ2lnd0ZDLy8vLy93K0RRZ0VnQnEwaWY0WjhRZ0Y5SUgrSXB5QjlJSDU4SUh5SXB5SWtJQVoyYTBGL0lBWjJjVUVBSUNRZ2d3R25SeHNoQmlCOUlJRUJmQ0I4aUNLREFVTC8vLy8vRDROQ0FTQU1yU0ovaG54Q0FYMGdmNGluSUgwZ2dnRjhJSHlJcHlJa0lBeDJhMEYvSUF4MmNVRUFJQ1FnZ3dHblJ4c2hEQ0FSQkVBZ0VTQUdOZ0lFSUJFZ0REWUNBQ0FSUVFocUlRc0xJQVlnREd3aUJpQU5LQUlZU3dSQUlBMGdCallDR0FzZ0ZFRUJhaUlVSUFFb0FnUkpEUUFMQ3lBS1FUUnFJUW9nQVVHNENHb2hBU0FUUVFGcUloTWdGU2dDRUVrTkFBc0xJQjFCQVdvaEppQU5LQUljSVJNZ0RTZ0NHQ0VVSUFkQkFEWUNCQUpBSUJnb0FnaEJBV29pQWEwZ0V5QVVJQlpzSWlSc0locXRma0lnaUZBRVFDQUhJQUVnR213aUFUWUNDQ0FISUFGQkFoQVhJZ0UyQWdRZ0FRMEJDeUFQRUJRZ0dSQVVJQWNvQWdRaUFRUkFJQUVRRkNBSFFRQTJBZ1FMSUNaRkJFQWdCeUVMREFJTFFRQWhDeUFISVFFRFFDQUJLQUxJQVNJS0JFQkJBQ0VHSUFFb0FzUUJJaEVFZndOQUlBb29BZ3dpQ1FSQUlBa1FGQ0FLUVFBMkFnd2dBU2dDeEFFaEVRc2dDa0VRYWlFS0lBWkJBV29pQmlBUlNRMEFDeUFCS0FMSUFRVWdDZ3NRRkNBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFzZ0hVWWdDMEVCYWlFTFJRMEFDeUFISVFzTUFRc2dGU2dDR0NFTUlBY2dEU2dDRkNJc05nTE1BU0FISUEwb0Fnd2lMVFlDMEFFZ0J5QU5LQUlRSWlBMkF0UUJJQWNnRFNnQ0NDSTROZ0xZQVNBSElCbzJBZ3dnQnlBa05nSVFJQWNnRkRZQ0ZFRUJJUlVnQjBFQk5nSVlJQllFUUNBSEtBTElBU0VCUVFBaENTQU1JUXNEUUNBWklBbEJBblJxS0FJQUlRb2dBU0FMS0FJQU5nSUFJQUVnQ3lnQ0JEWUNCQUpBSUFFb0FnZ2lEa1VOQUNBQktBSU1JUVlnRGtFQlJ3UkFJQTVCZm5FaFBFRUFJUkVEUUNBR0lBb29BZ0EyQWdBZ0JpQUtLQUlFTmdJRUlBWWdDaWdDQ0RZQ0NDQUdJQW9vQWd3MkFnd2dCaUFLS0FJUU5nSVFJQVlnQ2lnQ0ZEWUNGQ0FHSUFvb0FoZzJBaGdnQmlBS0tBSWNOZ0ljSUFaQklHb2hCaUFLUVNCcUlRb2dFVUVDYWlJUklEeEhEUUFMQ3lBT1FRRnhSUTBBSUFZZ0NpZ0NBRFlDQUNBR0lBb29BZ1EyQWdRZ0JpQUtLQUlJTmdJSUlBWWdDaWdDRERZQ0RBc2dDMEUwYWlFTElBRkJFR29oQVNBSlFRRnFJZ2tnRmtjTkFBc0xJQ1pCQVVzRVFDQUhJUTREUUNBT0lEZzJBc2dESUE0Z0lEWUN4QU1nRGlBdE5nTEFBeUFPSUN3MkFyd0RJQTVCQVRZQ2lBSWdEaUFVTmdLRUFpQU9JQ1EyQW9BQ0lBNGdHallDL0FFZ0ZnUkFJQTRvQXJnRElRRkJBQ0VKSUF3aEN3TkFJQmtnQ1VFQ2RHb29BZ0FoQ2lBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJbVJRMEFJQUVvQWd3aEJpQW1RUUZIQkVBZ0prRitjU0U4UVFBaEVRTkFJQVlnQ2lnQ0FEWUNBQ0FHSUFvb0FnUTJBZ1FnQmlBS0tBSUlOZ0lJSUFZZ0NpZ0NERFlDRENBR0lBb29BaEEyQWhBZ0JpQUtLQUlVTmdJVUlBWWdDaWdDR0RZQ0dDQUdJQW9vQWh3MkFod2dCa0VnYWlFR0lBcEJJR29oQ2lBUlFRSnFJaEVnUEVjTkFBc0xJQ1pCQVhGRkRRQWdCaUFLS0FJQU5nSUFJQVlnQ2lnQ0JEWUNCQ0FHSUFvb0FnZzJBZ2dnQmlBS0tBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWxCQVdvaUNTQVdSdzBBQ3dzZ0RpQU9LUUlFTndMMEFTQVZJQjFISUE1QjhBRnFJUTRnRlVFQmFpRVZEUUFMQ3lBUEVCUWdHUkFVSUJnb0FxUURJUXNDUUNBWUxRQ0lMRUVFY1FSQUlBdEJmMFlOQVNBWVFhZ0RhaUVHSUJnb0FnZ2hBVUVBSVJFZ0J5RUtBMEFnQmlnQ0pDRU9JQXBCQVRZQ0xDQUtJQTQyQWxRZ0NpQUdLQUlBTmdJd0lBWW9BZ1FoRGlBS1FnQTNBa1FnQ2lBT05nSTBJQW9nQmlnQ0REWUNQQ0FLSUFZb0FoQTJBa0FnQmlnQ0NDRU9JQW9nRkRZQ1RDQUtJQTRnQVNBQklBNUxHellDT0NBR1FaUUJhaUVHSUFwQjhBRnFJUW9nQ3lBUlJpQVJRUUZxSVJGRkRRQUxEQUVMSUF0QmYwWU5BQ0FZS0FJSUlRWWdHQ2dDQkNFT0lBY2hDaUFMQkVBZ0MwRUJha0YrY1NFSlFRQWhBUU5BSUFwQ0FEY0NSQ0FLUVFBMkFqUWdDa0lCTndJc0lBb2dEallDVkNBS0lCTTJBandnQ2lBT05nTEVBaUFLSUJRMkFrd2dDaUFHTmdJNElBcENBRGNDdEFJZ0NrRUFOZ0trQWlBS1FnRTNBcHdDSUFvZ0V6WUNyQUlnQ2lBR05nS29BaUFLSUJRMkFyd0NJQW9nQ2lnQ3hBRTJBa0FnQ2lBS0tBSzBBellDc0FJZ0NrSGdBMm9oQ2lBQlFRSnFJZ0VnQ1VjTkFBc0xJQXRCQVhFTkFDQUtRZ0EzQWtRZ0NrRUFOZ0kwSUFwQ0FUY0NMQ0FLSUE0MkFsUWdDaUFUTmdJOElBb2dGRFlDVENBS0lBWTJBamdnQ2lBS0tBTEVBVFlDUUFzZ0J5RU9EQUVMSUFzUUZBc2dEVUVnYWlRQUFrQWdEa1VOQUNBdVFRRnFJU1lnRnlFWklBNGhGUUpBQWtBRFFDQVZLQUpVUVg5R0RRSWdLQ2dDRUVFQ2RCQVlJZ0ZGRFFJZ0FVRUJJQ2dvQWhCQkFuUVFHU0VhSUJVUVlBUkFBMEFnSHlnQ0ZDRUpBa0FDUUNBVktBSW9JQjRvQWd4UERRQWdGU2dDSUNJQklBa2dGU2dDSEVITUFHeHFJZ2NvQWhoUERRQWdCeWdDSENBQlFaZ0JiR29pQnlnQ0dFVU5BQ0FIUVJ4cUlRWkJBQ0VOQWtBRFFDQWJJQlVvQWh3Z0ZTZ0NJQ0FHSUExQkpHeHFJZ0VvQWhBZ0FTZ0NGQ0FWS0FJa1FTaHNhaUlCS0FJQUlBRW9BZ1FnQVNnQ0NDQUJLQUlNRUVGRkJFQWdEVUVCYWlJTklBY29BaGhKRFFFTUFnc0xJQm9nRlNnQ0hFRUNkR3BCQURZQ0FDQVFRUUEyQW9nQklDTW9BZ1FnSHlnQ0ZDQWVJQlVnRUVHTUFXb2dHU0FRUVlnQmFpQUlJRE1RWDBVTkJpQVZLQUlnSVEwZ0ZTZ0NIQ0VQSUJBb0FvZ0JJUkVnRUNnQ2pBRUVRQ0FRUVFBMkFvZ0JJQjhvQWhRZ0QwSE1BR3hxS0FJY0lBMUJtQUZzYWlJZEtBSVlJZ2tFZnlBSUlCRnJJUVlnQ0NBWmFpRWtJQjFCSEdvaEQwRUFJUXBCQUNFWUlCRWdHV29pTGlFVUEwQUNRQ0FQS0FJSUlBOG9BZ0JHRFFBZ0R5Z0NEQ0FQS0FJRVJnMEFJQThvQWhRZ0ZTZ0NKRUVvYkdvaUFTZ0NGQ0FCS0FJUWJDSXNSUTBBSUFFb0FoZ2hDVUVBSVJNRFFDQUpLQUlrSWdzRVFBSi9Ba0FnR0VVRVFDQUpLQUpBUlEwQkN5QUpRUUEyQWpSQkFTRU5RY0FBREFFTElBa29BZ0FoRFFKQUlBa2dDU2dDS0NJQkJIOGdEU0FCUVJoc2FpSU5RUlJyS0FJQUlBMUJER3NvQWdCSEJFQWdEVUVZYXlFTkRBSUxJQUZCQVdvRlFRRUxOZ0lvQ3dKL0FrQWdEU2dDRkNJQklCUkJmM05MRFFBZ0RVRVVhaUVNQTBBZ0FTQVVhaUFrU3cwQklBa29BZ1FoRmlBSktBSTBJaGdnQ1NnQ09FY0VmeUFMQlNBV0lCaEJBWFJCQVhJaUFVRURkQkFiSWhaRkJFQWdNMEVCUVlBSVFRQVFFd3dTQ3lBSklBRTJBamdnQ1NBV05nSUVJQWtvQWpRaEdDQU1LQUlBSVFFZ0NTZ0NKQXNoQnlBV0lCaEJBM1JxSWdzZ0FUWUNCQ0FMSUJRMkFnQWdDU0FZUVFGcU5nSTBJQTBnRFNnQ0FDQUJhallDQUNBTklBMG9BaEFpRENBTktBSUVhaUlXTmdJRUlBa2dCeUFNYXlJTE5nSWtJQTBnRmpZQ0NDQUJJQlJxSVJSQkFDQUhJQXhHRFFJYUlBa2dDU2dDS0VFQmFqWUNLQ0FOUVN4cUlRd2dEU2dDTENFQklBMUJHR29oRFNBQklCUkJmM05ORFFBTEN5QVZLQUljSVFjZ0ZTZ0NJQ0VMSUJVb0FpUWhEQ0FqS0FJRUtBSm9CRUFnRUNBSE5nSjRJQkFnQ3pZQ2RDQVFJQW8yQW5BZ0VDQU1OZ0pzSUJBZ0V6WUNhQ0FRSUFZMkFtUWdFQ0FCTmdKZ0lETkJBVUhBOGdBZ0VFSGdBR29RRXd3UEN5QVFJQWMyQWxnZ0VDQUxOZ0pVSUJBZ0NqWUNVQ0FRSUF3MkFrd2dFQ0FUTmdKSUlCQWdCallDUkNBUUlBRTJBa0FnTTBFQ1FjRHlBQ0FRUVVCckVCTWdDVUVBTmdJMElBbEJBVFlDUUVFQkN5RVlJQWtvQWlnaERVRXNDeUFKYWlBTk5nSUFDeUFKUWNRQWFpRUpJQk5CQVdvaUV5QXNSdzBBQ3lBZEtBSVlJUWtMSUE5QkpHb2hEeUFLUVFGcUlnb2dDVWtOQUFzZ0ZTZ0NJQ0VOSUJVb0Fod2hEeUFHSUJRZ0xtc2dHQnNGUVFBTElCRnFJUkVMSUNnb0FoZ2dEMEUwYkdvaUFTQU5JQUVvQWlRaUFTQUJJQTFKR3pZQ0pBd0NDeUFmS0FJVUlRa0xJQkJCQURZQ2lBRWdJeWdDQkNBSklCNGdGU0FRUVl3QmFpQVpJQkJCaUFGcUlBZ2dNeEJmUlEwRUlCVW9BaHdoRHlBUUtBS0lBU0VSSUJBb0Fvd0JSUTBBSUI4b0FoUWdEMEhNQUd4cUtBSWNJQlVvQWlBaUdFR1lBV3hxSWdFb0FoZ2lKRVVOQUNBSUlCRnJJUVlnQVVFY2FpRVdJQlVvQWlRaERFRUFJUTFCQUNFZEFrQUNRQU5BQWtBZ0ZpZ0NDQ0FXS0FJQVJnMEFJQllvQWd3Z0ZpZ0NCRVlOQUNBV0tBSVVJQXhCS0d4cUlnRW9BaFFnQVNnQ0VHd2lMa1VOQUNBQktBSVlJUXRCQUNFS0EwQWdDeWdDSkNJQkJFQWdDeWdDQUNFSkFrQWdDeUFMS0FJb0loTUVmeUFKSUJOQkdHeHFJZ2xCRkdzb0FnQWdDVUVNYXlnQ0FFY0VRQ0FKUVJocklRa01BZ3NnRTBFQmFnVkJBUXNpRXpZQ0tBc2dDU2dDRkNJVUlBMXFJZzBnRkVrTkJTQUdJQTFKRFFVRFFBSkFJQWtnQ1NnQ0VDSVVJQWtvQWdScU5nSUVJQUVnRkdzaEJ5QUJJQlJHRFFBZ0N5QVRRUUZxSWhNMkFpZ2dDU2dDTENJVUlBMXFJZzBnRkVrTkJpQUpRUmhxSVFrZ0J5RUJJQVlnRFU4TkFRd0dDd3NnQ3lBSE5nSWtDeUFMUWNRQWFpRUxJQXBCQVdvaUNpQXVSdzBBQ3dzZ0ZrRWthaUVXSUIxQkFXb2lIU0FrUncwQUN5QU5JQkZxSVJFTUFnc2dDeUFITmdJa0N5QWpLQUlFS0FKb1JRUkFJQkFnRHpZQ0dDQVFJQmcyQWhRZ0VDQWROZ0lRSUJBZ0REWUNEQ0FRSUFvMkFnZ2dFQ0FHTmdJRUlCQWdGRFlDQUNBelFRSkI2L0VBSUJBUUV5QVZLQUljSVE4Z0JpQVJhaUVSREFFTElCQWdEellDT0NBUUlCZzJBalFnRUNBZE5nSXdJQkFnRERZQ0xDQVFJQW8yQWlnZ0VDQUdOZ0lrSUJBZ0ZEWUNJQ0F6UVFGQjYvRUFJQkJCSUdvUUV3d0VDd0pBSUJvZ0QwRUNkR29vQWdCRkRRQWdLQ2dDR0NBUFFUUnNhaUlCS0FJa0RRQWdBU0FmS0FJVUlBOUJ6QUJzYWlnQ0dFRUJhellDSkFzZ0NDQVJheUVJSUJFZ0dXb2hHU0FWRUdBTkFBc0xJQm9RRkNBVlFmQUJhaUVWSUJ4QkFXb2lIQ0FlS0FLa0EwME5BQXNnRGlBbUVFSWdQeUFaSUJkck5nSUlRUUVNQXdzZ0RpQW1FRUlnR2hBVURBRUxJQTRnSmhCQ0MwRUFDeUFRUVpBQmFpUUFJQ01RTWtVTkFTQWJLQUlnS0FMUUt5RWlJQnNvQWhRb0FnQWlFQ2dDRkNFT0lEOUJBVFlDREVFQUlSbEJBQ0VNSUJzb0FpQWlBU2dDRENBQktBSUlSZ1JBSUNJb0FoQkJCSFpCQVhFaERBc0NRQ0FRS0FJUUlncEZEUUFEUUFKQUlCc29Ba1FpQVFSQUlBRWdHVUVDZEdvb0FnQkZEUUVMSUQ5QkRHb2hGRUVBSVFvQ1FDQU9LQUlZSWdGRkRRQWdHeWdDTENFUkEwQWdEaWdDSENBS1FaZ0JiR29pRHlnQ0dDSUxCRUFnRDBFY2FpRVRJQThvQWhRaEFTQVBLQUlRSVJWQkFDRVhBMEFnQVNBVmJBUkFJQk1nRjBFa2JHb2hEVUVBSVFrRFFDQWJJQTRvQWhBZ0NpQU5LQUlRSUEwb0FoUWdDVUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQkJJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNHd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENBTkFBa0FnR3lBT0tBSVFJQW9nRFNnQ0VDQUhLQUlZSUFoQnhBQnNhaUlHS0FJSUlBWW9BZ3dnQmlnQ0VDQUdLQUlVRUVGRkJFQWdCaWdDUENJQlJRMEJJQUVRRkNBR1FRQTJBandNQVFzZ0d5Z0NRRVVFUUNBR0tBSThEUUVnQmlnQ0VDQUdLQUlJUmcwQklBWW9BaFFnQmlnQ0RFWU5BUXRCQVVFc0VCY2lBVVVFUUNBL1FRQTJBZ3dNQ2dzZ0d5Z0NRQ0VMSUFGQkFEWUNKQ0FCSUJRMkFod2dBU0FpTmdJVUlBRWdEallDRUNBQklBMDJBZ3dnQVNBR05nSUlJQUVnQ2pZQ0JDQUJJQXMyQWdBZ0FTQU1OZ0lvSUFFZ016WUNJQ0FCSUJFb0FnUkJBVW8yQWhnZ0VVRU9JQUVRTXlBL0tBSU1SUTBKQ3lBSVFRRnFJZ2dnQnlnQ0ZDQUhLQUlRYkVrTkFBc01BUXNnQVVVTkFFRUFJUlVEUUNBSEtBSVlJQlZCeEFCc2FpSUJLQUk4SWdZRVFDQUdFQlFnQVVFQU5nSThJQWNvQWhRaEN5QUhLQUlRSVFnTElCVkJBV29pRlNBSUlBdHNTUTBBQ3dzZ0NVRUJhaUlKSUE4b0FoUWlBU0FQS0FJUUloVnNTUTBBQ3lBUEtBSVlJUXNMSUJkQkFXb2lGeUFMU1EwQUN5QU9LQUlZSVFFTElBcEJBV29pQ2lBQlNRMEFDd3NnUHlnQ0RFVU5BaUFRS0FJUUlRb0xJQ0pCdUFocUlTSWdEa0hNQUdvaERpQVpRUUZxSWhrZ0Nra05BQXNMUVFBaElpQWJLQUlzRUNRZ1B5Z0NERVVOQVFKQUlCc29Ba0FOQUNBYktBSVlJaGtvQWhCRkRRQkJBQ0VPQTBBZ0d5Z0NGQ2dDQUNnQ0ZDQU9RY3dBYkdvaUFTZ0NIQ0FaS0FJWUlBNUJOR3hxS0FJa1FaZ0JiR29pQnlnQ2lBRWhCaUFIS0FLUUFTRUlJQWNvQW93QklRc2dCeWdDbEFFaEJ5QUJLQUkwRUJRZ0FVRUFOZ0kwQWtBZ0d5Z0NSQ0lKQkVBZ0NTQU9RUUowYWlnQ0FFVU5BUXNnQmlBSVJnMEFJQWNnQzBZTkFDQUhJQXRySWdldElBZ2dCbXNpQnExK1FpQ0lRZ0JTQkVBZ00wRUJRWUVYUVFBUUV3d0ZDeUFHSUFkc0lnZEJnSUNBZ0FSUEJFQWdNMEVCUVlFWFFRQVFFd3dGQ3lBQklBZEJBblFRSENJQk5nSTBJQUVOQUNBelFRRkJnUmRCQUJBVERBUUxJQTVCQVdvaURpQWJLQUlZSWhrb0FoQkpEUUFMQ3lBYktBSWdJUmtnR3lnQ0ZDZ0NBQ0lWS0FJUUJFQWdGU2dDRkNFT0lCa29BdEFySVJrZ0d5Z0NHQ2dDR0NFS1FRQWhDd05BQWtBZ0d5Z0NSQ0lCQkVBZ0FTQUxRUUowYWlnQ0FFVU5BUXNnQ2lnQ0pFRUJhaUVCSUJrb0FoUkJBVVlFUUNBQklSNUJBQ0VJUVFBaEJ2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRjJJd0JCSUdzaUp5UUFBa0FDUUNBYktBSkFCRUJCQVNFSElBRkJBVVlOQWlBT0tBSWNJZ1lnRGlnQ0dFR1lBV3hxSWdGQmtBRnJLQUlBSWc4Z0FVR1lBV3NvQWdBaUVVWU5BaUFHS0FJRUlSUWdCaWdDRENFV0lBWW9BZ0FoR0NBR0tBSUlJUjBnR3lnQ0xDSVhLQUlFSVJBZ0hrRUJheUlOSVF3Z0JpRUhBa0FnRFVFRVR3UkFJQTFCQTNFaERDQUhJQTFCZkhFaUNVR1lBV3hxSVFkQkFDRUJBMEFnZGlBR0lBRkJtQUZzYWlJSVFlZ0VhaUFJUWRBRGFpQUlRYmdDYWlBSS9Wd0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhnQkdvZ0NFSElBMm9nQ0VHd0Ftb2dDUDFjQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQWhCN0FScUlBaEIxQU5xSUFoQnZBSnFJQWo5WEFLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlUUVhaUFJUWN3RGFpQUlRYlFDYWlBSS9Wd0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGRpQUJRUVJxSWdFZ0NVY05BQXNnZGlCMklIYjlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZGlCMklIYjlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaENDQUpJQTFHRFFFTEEwQWdDQ0FIS0FLZ0FTQUhLQUtZQVdzaUFTQUJJQWhKR3lJQklBY29BcVFCSUFjb0Fwd0JheUlJSUFFZ0NFc2JJUWdnQjBHWUFXb2hCeUFNUVFGcklnd05BQXNMUVFBaEJ5QUlRZi8vL3o5TERRSWdKeUFJUVFWMEloTVFOeUlNTmdJUUlBeEZEUUlnSnlBTU5nSUFJQTBFUUNBUElCRnJJUkVnRmlBVWF5RUpJQjBnR0dzaEFRTkFJQTRvQWlRaEZDQW5JQWtpRHpZQ0NDQW5JQUVpQnpZQ0dDQUdLQUtjQVNFSUlBWW9BcVFCSVFrZ0JpZ0NvQUVoQVNBbklBWW9BcGdCSWhaQkFtODJBaHdnSnlBQklCWnJJZ0VnQjJzMkFoUUNRQ0FRUVFKSUloMUZJQWtnQ0dzaUNVRUJTM0ZGQkVCQkFDRUlJQWxGRFFFRFFDQW5RUkJxSUJRZ0NDQVJiRUVDZEdvUVppQUlRUUZxSWdnZ0NVY05BQXNNQVFzZ0NTQVFJQWtnRUVrYkloWkJBV3NoSXlBSklCWnVJUmhCQUNFSEEwQkJKQkFZSWdoRkRRVWdKLzBBQWhBaGRpQUlJQlEyQWhnZ0NDQVJOZ0lVSUFnZ0FUWUNFQ0FJSUhiOUN3SUFJQWdnQnlBWWJEWUNIQ0FISUNOR0lSOGdDQ0FKSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FJSUJNUU55SWZOZ0lBSUI5RkJFQkJBQ0VISUJjUUpDQUlFQlFnREJBVURBY0xJQmRCQ2lBSUVETWdCeUFXUncwQUN5QVhFQ1FMSUNjZ0NTQVBhellDQkNBbklBWW9BcHdCUVFKdk5nSU1Ba0FnSFVVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQ0NBQlFRaFBCRUFEUUNBbklCUWdDRUVDZEdvZ0VVRUlFRFlnQnlJSVFRaHFJZ2NnQVUwTkFBc0xJQUVnQ0UwTkFTQW5JQlFnQ0VFQ2RHb2dFU0FCSUFockVEWU1BUXNnQVNBUUlBRWdFRWtiSWc5QkFXc2hHQ0FCSUE5dUlSWkJBQ0VIQTBCQkpCQVlJZ2hGRFFVZ0ovMEFBZ0FoZGlBSUlCUTJBaGdnQ0NBUk5nSVVJQWdnQ1RZQ0VDQUlJSGI5Q3dJQUlBZ2dCeUFXYkRZQ0hDQUhJQmhHSVIwZ0NDQUJJQWRCQVdvaUJ5QVdiQ0FkR3pZQ0lDQUlJQk1RTnlJZE5nSUFJQjFGQkVCQkFDRUhJQmNRSkNBSUVCUWdEQkFVREFjTElCZEJDeUFJRURNZ0J5QVBSdzBBQ3lBWEVDUUxJQVpCbUFGcUlRWWdEVUVCYXlJTkRRQUxDMEVCSVFjZ0RCQVVEQUlMUVFFaEJ5QU9LQUljSWdrZ0hrR1lBV3hxSWl0Qm1BRnJJbDBvQWdBZ0swR1FBV3NvQWdCR0RRRWdLMEdVQVdzaVhpZ0NBQ0FyUVl3QmF5Z0NBRVlOQVNBSktBSUVJUmNnQ1NnQ0RDRU5JQWtvQWdBaEVDQUpLQUlJSVJFZ0RpZ0NSQ0VvSUE0b0FrQWhHaUFPS0FJOElTWWdEaWdDT0NFdUlBNGdIaEJsSWpsRkJFQkJBQ0VIREFJTEFrQUNRQ0FlUVFGSEJFQUNRQUpBSUI1QkFXc2lEMEVFU1FSQUlBOGhBU0FKSVFjTUFRc2dEMEVEY1NFQklBa2dEMEY4Y1NJTVFaZ0JiR29oQndOQUlIWWdDU0FHUVpnQmJHb2lDRUhvQkdvZ0NFSFFBMm9nQ0VHNEFtb2dDUDFjQXFBQi9WWUNBQUg5VmdJQUF2MVdBZ0FESUFoQjRBUnFJQWhCeUFOcUlBaEJzQUpxSUFqOVhBS1lBZjFXQWdBQi9WWUNBQUw5VmdJQUEvMnhBZjI1QVNBSVFld0VhaUFJUWRRRGFpQUlRYndDYWlBSS9Wd0NwQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhrQkdvZ0NFSE1BMm9nQ0VHMEFtb2dDUDFjQXB3Qi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJWFlnQmtFRWFpSUdJQXhIRFFBTElIWWdkaUIyL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQkluWWdkaUIyL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2JrQi9Sc0FJUWdnRENBUFJnMEJDd05BSUFnZ0J5Z0NvQUVnQnlnQ21BRnJJZ1lnQmlBSVNSc2lCaUFIS0FLa0FTQUhLQUtjQVdzaUNDQUdJQWhMR3lFSUlBZEJtQUZxSVFjZ0FVRUJheUlCRFFBTEN5QUlRWUNBZ0lBQlR3MENJQWhCQkhRUU55SVNSUTBDQWtBZ0hrVU5BQ0FOSUJkcklSWWdFU0FRYXlFVElCSkJCR3NoT2lBU1FSeHFJVTRnRWtFWWFpRTRJQkpCRkdvaFBDQVNRUXhySVVFZ0VrRU1haUVwSUJKQkNHb2hKU0FTUVJCcklVSWdFa0VJYXlGQUlCSkJCR29oSVNBb3JTRjhJQnF0SVgwZ0pxMGhnQUVnTHEwaGdRRkJBU0ZEQTBBZ0NTZ0NuQUVpQVVFQ2J5RTNJQWtvQXBnQklnZEJBbThoUGlBSktBS2tBU0FCYXlJa0lCWnJJUzhnQ1NnQ29BRWdCMnNpTENBVGF5RXhJQzRpQmlFSElDWWlIU0VVSUJvaUFTRXdJQ2dpQ0NFUkFrQWdEaWdDRkNJUElFTkdEUUFnRHlCRGF5RVBRUUFoRkVFQUlRY2dCZ1JBUW44Z0Q2MGlmb1pDZjRVZ2dRRjhJSDZJcHlFSEN5QW1CRUJDZnlBUHJTSitoa0ovaFNDQUFYd2dmb2luSVJRTFFRQWhDRUVBSVFFZ0dnUkFRbjhnRDYwaWZvWkNmNFVnZlh3Z2ZvaW5JUUVMSUNnRVFFSi9JQSt0SW42R1FuK0ZJSHg4SUg2SXB5RUlDMEVBSVRCQkFDRUdRUUVnRDBFQmEzUWlEQ0F1U1FSQUlDNGdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVHQ3lBTUlCcEpCRUFnR2lBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklUQUxRUUFoRVVFQUlSMGdEQ0FtU1FSQUlDWWdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVkQ3lBTUlDaFBEUUFnS0NBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklSRUxRWDhnTUNBSktBSzBBU0lQYXlJTVFRQWdEQ0F3VFJzaURFRUNhaUlYSUF3Z0Ywc2JJZ3dnTVNBTUlERkpHeUkxUVg4Z0FTQUpLQUxZQVNJdGF5SU1RUUFnQVNBTVR4c2lBVUVDYWlJTUlBRWdERXNiSWdFZ0V5QUJJQk5KR3lJMklENGJRUUYwSWdFZ05pQTFJRDRiUVFGMFFRRnlJZ3dnQVNBTVN4c2lSaUFzU1NFWUlBWWdEMnNpQVVFQUlBRWdCazBiSWdGQkFtc2lCa0VBSUFFZ0JrOGJJaEFnQnlBdGF5SUJRUUFnQVNBSFRSc2lBVUVDYXlJR1FRQWdBU0FHVHhzaURTQStHMEVCZENJR0lBMGdFQ0ErRzBFQmRFRUJjaUlQU1NFZ0lCUWdDU2dDdUFFaUkyc2lERUVBSUF3Z0ZFMGJJZ3hCQW1zaUYwRUFJQXdnRjA4Yklnd2hIQ0FkSUFrb0F0d0JJaFJySWhkQkFDQVhJQjFOR3lJWFFRSnJJaDFCQUNBWElCMVBHeUlYSVNwQmZ5QUlJQ05ySWgxQkFDQUlJQjFQR3lJSVFRSnFJaDBnQ0NBZFN4c2lDQ0FXSUFnZ0Zra2JJaU1oTWtGL0lCRWdGR3NpQ0VFQUlBZ2dFVTBiSWdoQkFtb2lFU0FJSUJGTEd5SUlJQzhnQ0NBdlNSc2lIeUU3SURjRVFDQU1JU29nSHlFeUlDTWhPeUFYSVJ3TElFWWdMQ0FZR3lGSElBWWdEeUFnR3lFUElCWWdIMm9oVHlBV0lCZHFJVkFnSkFSQUlCSWdEVUVEZEdvaVJFRUVhaUE2SURGQkEzUWlCbW9pVVNBTklERklJZ2diSVZJZ05TQVRRUUZySUJNZ05Vb2JJU0JCQUNFWUlCTkJBVW9nTVVFQVNuSWhVeUFoSUQ1QkFuUWlFV3NnRUVFRGRHb2hWQ0FSSUVScUlWVWdEU0EySURFZ01TQTJTaHNpRVNBSElDMGdCeUF0U1J0cVFRSWdBU0FCUVFKUEcyb2dCMEYvYzJvaVNFRjhjU0pGYWlFMElBMUJBV29pRkNCRmFpRTlJQk1nTldvaFZpQVFJQk5xSVZjZ0RmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVhrZ0VpQVBRUUowYWlGWUlFQWdFMEVEZENJQmFpRkpJQUVnT21vaFNpQUdJRUJxSVVzZ0UwVWdNVUVCUm5FaFdTQVNJRWRCQW5RaUFXb2hXaUFCSURwcUlWc2dGUDBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklYb2dPaUFOSURFZ0NCdEJBM1JxSVZ3RFFBSkFBa0FnR0NBalNTQU1JQmhOY1EwQUlCZ2dUMGtnR0NCUVQzRU5BQ0FZUVFGcUlTME1BUXNnTENCR1N3UkFJRnRCQURZQ0FDQmFRUUEyQWdBTElEa2dEU0FZSURZZ0dFRUJhaUl0SUZWQkFrRUFFQ0lnT1NCWElCZ2dWaUF0SUZSQkFrRUFFQ0lDUUFKQUFrQWdQa1VFUUNCVFJRMERJQTBnTms0TkFnSkFBa0FnRFVFQVNnUkFJRndvQWdBaEJ3d0JDeUFoS0FJQUlnY2hBU0FOUVFCSURRRUxJQWNoQVNCU0tBSUFJUWNMSUVRZ1JDZ0NBQ0FCSUFkcVFRSnFRUUoxYXpZQ0FDQVVJZ2NnRVU0TkFVRUFJUWNnRkNFQklBMGhDQ0I2SVhZZ2VTRjRJRWhCQTBzRVFBTkFJQklnZGtFQi9hc0JJbmY5R3dCQkFuUnFJZ0VnRWlCMy9Sc0RRUUowYWlJR0lCSWdkLzBiQWtFQ2RHb2lDQ0FTSUhmOUd3RkJBblJxSWgwZ0FmMWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUI0UVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0o3L1JzRFFRSjBhaUFTSUh2OUd3SkJBblJxSUJJZ2UvMGJBVUVDZEdvZ0VpQjcvUnNBUVFKMGF2MWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUIzL1F3QkFBQUFBUUFBQUFFQUFBQUJBQUFBL1ZBaWQvMGJBMEVDZEdvZ0VpQjMvUnNDUVFKMGFpQVNJSGY5R3dGQkFuUnFJQklnZC8wYkFFRUNkR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlkLzFhQWdBQUlCMGdkLzFhQWdBQklBZ2dkLzFhQWdBQ0lBWWdkLzFhQWdBRElIajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoZUNCMi9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJWFlnQjBFRWFpSUhJRVZIRFFBTElEMGhBU0EwSVFnZ0VTRUhJRVVnU0VZTkFnc0RRQ0FTSUFGQkEzUnFJZ2NnQnlnQ0FDQVNJQWhCQTNScUtBSUVJQWNvQWdScVFRSnFRUUoxYXpZQ0FDQUJJZ2hCQVdvaUFTQVJSdzBBQ3lBUklRY01BUXNDUUNCWlJRUkFJQTBpQnlBMlRnMEJBMEFnRWlBSFFRTjBhaUlCS0FJRUlRWWdBU0FHQW44Q1FDQUhRUUJPQkVBZ0FTQkxJQWNnTVVnYktBSUFJVEFnQjBFQmFpRUJEQUVMSUJJb0FnQWhNRUVBSVFFZ0VpQUhRUUZxSWdjTkFSb0xJQUVnTVU0RVFDQUJJUWNnU3d3QkN5QVNJQUVpQjBFRGRHb0xLQUlBSURCcVFRSnFRUUoxYXpZQ0JDQUhJRFpJRFFBTERBRUxJQklnRWlnQ0FFRUNiVFlDQUF3REN5QVFJZ2NnTlU0TkFnTkFJQklnQjBFRGRDSUJhaUlHS0FJQUlRZ0NmeUFIUVFCSUJFQWdJU2dDQUNFZElDRU1BUXNnRWlBSFFRTjBha0VFYWlCS0lBY2dFMGdiS0FJQUlSMGdJU0FIUlEwQUdpQktJQWNnRTBvTkFCb2dBU0E2YWdzaEFTQUdJQUVvQWdBZ0hXcEJBWFVnQ0dvMkFnQWdCMEVCYWlJSElEVkhEUUFMREFJTElBY2dOazROQUFOQUlCSWdCMEVEZEdvaUFTQUJLQUlBQW44Q1FDQUhRUUJLQkVBZ09pQUhJREVnQnlBeFNCdEJBM1JxS0FJQUlRZ01BUXNnSVNnQ0FDRUlJQ0VnQjBFQVNBMEJHZ3NnVVNBSElERk9EUUFhSUJJZ0IwRURkR3BCQkdvTEtBSUFJQWhxUVFKcVFRSjFhellDQUNBSFFRRnFJZ2NnTmtjTkFBc0xJQkFnTlU0TkFDQWdJQkFpQVNJSFNnUkFBMEFnRWlBSFFRTjBhaUlCSUFFb0FnUWdFaUFIUVFGcUlnZEJBM1JxS0FJQUlBRW9BZ0JxUVFGMWFqWUNCQ0FISUNCSERRQUxJQ0FoQVFzZ0FTQTFUZzBBQTBBQ2Z3SkFJQUVpQjBFQVRnUkFJQklnQVVFRGRHb2dTU0FCSUJOSUd5Z0NBQ0VHSUFGQkFXb2hDQXdCQ3lBU0tBSUFJUVpCQUNFSUlCSWdCMEVCYWlJQkRRRWFDeUFJSUJOT0JFQWdDQ0VCSUVrTUFRc2dFaUFJSWdGQkEzUnFDeUVJSUJJZ0IwRURkR29pQnlBSEtBSUVJQWdvQWdBZ0JtcEJBWFZxTmdJRUlBRWdOVWdOQUFzTElEa2dEeUFZSUVjZ0xTQllRUUZCQUVFQUVDcEZEUVlMSUMwaUdDQWtSdzBBQ3dzZ0NVR1lBV29oQ1NBeVFRRjBJZ0VnTzBFQmRFRUJjaUlISUFFZ0Iwc2JJZ0VnSkNBQklDUkpHeUUrSUNrZ0RFRUZkQ0lCUVJCeUlnWnFJRG9nTDBFRmRDSUlhaUFNSUM5SUlnY2JJVVFnQmlBbGFpQUlJRUJxSUFjYklVVWdCaUFoYWlBSUlFRnFJQWNiSVVZZ0JpQVNhaUFJSUVKcUlBY2JJVWdnSHlBV1FRRnJJQllnSDBvYklRMGdMMEVBU2lJUUlCWkJBVXB5SVVrZ0FTQVNhaUlkSURkQkJIUnFJVW9nS1NBV1FRTjBJZ1pCQ0dzaU1rRUFJQlpCQUV3YlFRSjBJZ2hxSVVzZ0NDQWxhaUZSSUFnZ0lXb2hVaUFJSUJKcUlWTWdLVUVBSUM5QkEzUWlDRUVJYXlJN0lCQWJRUUowSWhCcUlWUWdFQ0FsYWlGVklCQWdJV29oVmlBUUlCSnFJVmNnRWtFRUlEZEJBblJyUVFKMGFpQVhRUVYwYWlGWUlDTWdMeUFqSUM5SUd5RVFJQXhCQVdvaEZDQVNJQnhCQVhRaUVTQXFRUUYwUVFGeUloTWdFU0FUU1JzaVdVRUVkR29oV2lBQklDbHFJVFFnQVNBbGFpRWNJQUVnSVdvaExTQXBJQlpCQlhRaUFXb2hXeUFHUVFGcklUMGdBU0FsYWlGY0lBWkJBbXNoTVNBQklDRnFJVjhnQmtFRGF5RTFJQUVnRW1vaFlDQUdRUVJySVRZZ0NFRUZheUZoSUFoQkJtc2hZaUFJUVFkcklXTWdGa1VnTDBFQlJuRWhaQ0FwSURKQkFuUWlBV29oWmlBQklDVnFJV2NnQVNBaGFpRm9JQUVnRW1vaGFTQXBJQWhCQkdzaWFrRUNkQ0lCYWlGcklBRWdKV29oYkNBQklDRnFJVzBnQVNBU2FpRnVJRG9nRENBdklBY2JRUVYwSWdGcUlXOGdBU0JBYWlFVElBRWdRV29oR0NBQklFSnFJWEFnS1NBN1FRSjBJZ0ZxSVhFZ0FTQWxhaUZ5SUFFZ0lXb2hjeUFCSUJKcUlYUURRQUpBQWtBQ2Z3SkFJQThpRVNCSFNRUkFJRGtnRHlBTVFRUWdSeUFQYXlJQklBRkJCRThiSUE5cUlnOGdJeUJLUVFGQkNCQWlJRGtnRVNCUUlBOGdUeUJZUVFGQkNCQWlJRGRGQkVBZ1NVVU5CU0FNSUNOT0RRUUNmeUFNUVFCS0JFQWdjQ2dDQUNFSElCTWhCaUFZSVFnZ2J3d0JDeUFTS0FJUUlRY2dERUVBU0EwRElEZ2hCaUE4SVFnZ1Rnc2dIU0FkS0FJQUlBY2dTQ2dDQUdwQkFtcEJBblZyTmdJQUlDMGdMU2dDQUNBSUtBSUFJRVlvQWdCcVFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ0JpZ0NBQ0JGS0FJQWFrRUNha0VDZFdzMkFnQWdSQ2dDQUNFSEtBSUFEQU1MSUdRRVFDQVNJQklvQWdCQkFtMDJBZ0FnRWlBU0tBSUVRUUp0TmdJRUlDVWdKU2dDQUVFQ2JUWUNBQ0FwSUNrb0FnQkJBbTAyQWdBTUJRc2dJeUFNSWdkS0JFQURRQ0FIUVFOMElRWUNRQUpBSUFkQkFFZ0VRQ0FIUVg5R0RRRWdFaUFHUVFKMGFpSUJJQUg5QUFJUUlCTDlBQUlBUVFIOXF3SDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFnc2dFaUFHUVFKMGFpSUJLQUlRSVFnZ0x5QUhRUUZxSWlCTUJFQWdBU0FJSUJJZ0JpQTdJQWNnTDBnaUNCdEJBblJxS0FJQUlIUW9BZ0JxUVFKcVFRSjFhellDRUNBQklBRW9BaFFnRWlBR1FRRnlJR01nQ0J0QkFuUnFLQUlBSUhNb0FnQnFRUUpxUVFKMWF6WUNGQ0FCSUFFb0FoZ2dFaUFHUVFKeUlHSWdDQnRCQW5ScUtBSUFJSElvQWdCcVFRSnFRUUoxYXpZQ0dDQUJJQUVvQWh3Z0VpQUdRUU55SUdFZ0NCdEJBblJxS0FJQUlIRW9BZ0JxUVFKcVFRSjFhellDSEF3Q0N5QUJJQUZCRkdvZ0NQMFIvVllDQUFFZ0FVRVlhdjFkQWdEOURRQUJBZ01FQlFZSEVCRVNFeFFWRmhjZ0FmMEFBZ0FnRWlBZ1FRVjBhdjBBQWdEOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFRc2dRaUJDS0FJQUlCSW9BZ0FnVnlnQ0FHcEJBbXBCQW5Wck5nSUFJRUVnUVNnQ0FDQVNLQUlFSUZZb0FnQnFRUUpxUVFKMWF6WUNBQ0JBSUVBb0FnQWdKU2dDQUNCVktBSUFha0VDYWtFQ2RXczJBZ0FnT2lBNktBSUFJQ2tvQWdBZ1ZDZ0NBR3BCQW1wQkFuVnJOZ0lBQ3lBSFFRRnFJZ2NnSTBjTkFBc0xJQjhnRnlJSFRBMEVBMEFnQjBFRGRDRUdBa0FnQjBFQVNBUkFJQklnQmtFQ2RHb2lBU0FTL1FBQ0VFRUIvYXNCUVFIOXJBRWdBZjBBQWdEOXJnSDlDd0lBREFFTElBY0VRQ0FTSUFaQkFuUWlDR29pQVNBQktBSUFJR0FnQVNBSElCWktJaUFiUVJCcktBSUFJQklnQmtFRWNpQTJJQWNnRmtnaUtodEJBblJxS0FJQWFrRUJkV28yQWdBZ0FTQUJLQUlFSUY4Z0NDQWhhaUFnRzBFUWF5Z0NBQ0FTSUFaQkJYSWdOU0FxRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FCSUFFb0FnZ2dYQ0FJSUNWcUlDQWJRUkJyS0FJQUlCSWdCa0VHY2lBeElDb2JRUUowYWlnQ0FHcEJBWFZxTmdJSUlBRWdBU2dDRENCYklBZ2dLV29nSUJ0QkVHc29BZ0FnRWlBR1FRZHlJRDBnS2h0QkFuUnFLQUlBYWtFQmRXbzJBZ3dNQVFzZ0VpQVNLQUlBSUJJb0FoQWdFa0VFSURZZ0J5QVdTQ0lCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FTSUJJb0FnUWdFaWdDRkNBU1FRVWdOU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FsSUNVb0FnQWdFaWdDR0NBU1FRWWdNU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FwSUNrb0FnQWdFaWdDSENBU1FRY2dQU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQXNnQjBFQmFpSUhJQjlIRFFBTERBUUxJQ3doRXlBa0lSWWdRMEVCYWlKRElCNUhEUVVNQmdzZ0hTQWRLQUlBSUFkQkFYUkJBbXBCQW5Wck5nSUFJQzBnTFNnQ0FDQThLQUlBUVFGMFFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ09DZ0NBRUVCZEVFQ2FrRUNkV3MyQWdBZ1RpZ0NBQ0lIQ3lFQklEUWdOQ2dDQUNBQklBZHFRUUpxUVFKMWF6WUNBQ0FNSVFZZ0VDQVVJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0FDQVNJQVpCQlhScS9RQUNFQ0FIL1FBQ0VQMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCL1FzQ0FDQUJJZ1pCQVdvaUFTQVFSdzBBQ3lBUUlRY0xJQWNnSTA0TkFBTkFJQWRCQTNRaUJrRUVjaUVnSUFjZ0wwZ2hDQUovSUFkQkFFd0VRQ0FTS0FJUUlTb2dCMEVBVGdSQUlCSWdCa0VDZENJd2FpSUJJQUVvQWdBZ0tpQVNJQ0FnYWlBSUcwRUNkQ0lCYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ0VnTUdvaUNDQUlLQUlBSUJJb0FoUWdBU0FoYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ1VnTUdvaUNDQUlLQUlBSUJJb0FoZ2dBU0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQklvQWh3Z0FTQXBhaWdDQUdwQkFtb01BZ3NnRWlBR1FRSjBJZ0ZxSWdnZ0NDZ0NBQ0FxUVFGMFFRSnFRUUoxYXpZQ0FDQUJJQ0ZxSWdnZ0NDZ0NBQ0FTS0FJVVFRRjBRUUpxUVFKMWF6WUNBQ0FCSUNWcUlnRWdBU2dDQUNBU0tBSVlRUUYwUVFKcVFRSjFhellDQUNBU0tBSWNRUUYwUVFKcURBRUxJQklnQnlBdklBZ2JRUU4wUVFSclFRSjBJZ0ZxS0FJQUlTb2dDRVVFUUNBU0lBWkJBblFpQ0dvaUlDQWdLQUlBSUNvZ2JpZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0lXb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ2JTZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0pXb2lDQ0FJS0FJQUlBRWdKV29vQWdBZ2JDZ0NBR3BCQW1wQkFuVnJOZ0lBSUFFZ0tXb29BZ0FnYXlnQ0FHcEJBbW9NQVFzZ0VpQUdRUUowSWpCcUlnZ2dDQ2dDQUNBcUlCSWdJRUVDZENJSWFpZ0NBR3BCQW1wQkFuVnJOZ0lBSUNFZ01Hb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ0NDQWhhaWdDQUdwQkFtcEJBblZyTmdJQUlDVWdNR29pSUNBZ0tBSUFJQUVnSldvb0FnQWdDQ0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS1dvb0FnQWdDQ0FwYWlnQ0FHcEJBbW9MSVFFZ0tTQUdRUUowYWlJR0lBWW9BZ0FnQVVFQ2RXczJBZ0FnQjBFQmFpSUhJQ05IRFFBTEN5QVhJQjlPRFFBZ0RTQVhJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0lDQUgvUUFDQVAydUFVRUIvYXdCSUFmOUFBSVEvYTRCL1FzQ0VDQUJRUUZxSWdFZ0RVY05BQXNnRFNFSEN5QUhJQjlPRFFBRFFDQXBJQWRCQTNRaUFVRUVjaUlHUVFKMGFpSXFBbjhnQjBFQVNBUkFJQklvQWdBaEFTQUhRWDlIQkVBZ0VpQUdRUUowSWdacUlnZ2dDQ2dDQUNBQmFqWUNBQ0FHSUNGcUlnRWdBU2dDQUNBaEtBSUFhallDQUNBR0lDVnFJZ0VnQVNnQ0FDQWxLQUlBYWpZQ0FDQXBLQUlBREFJTElCSWdCa0VDZENJR2FpSUlJQWdvQWdBZ1V5Z0NBQ0FCYWtFQmRXbzJBZ0FnQmlBaGFpSUJJQUVvQWdBZ1VpZ0NBQ0FoS0FJQWFrRUJkV28yQWdBZ0JpQWxhaUlCSUFFb0FnQWdVU2dDQUNBbEtBSUFha0VCZFdvMkFnQWdTeWdDQUNBcEtBSUFha0VCZFF3QkN5QVNJQUVnTWlBSElCWklHMEVDZEdvaUFTZ0NBQ0VJSUJZZ0IwRUJhaUl3VEFSQUlCSWdCa0VDZENJR2FpSWdJQ0FvQWdBZ2FTZ0NBQ0FJYWtFQmRXbzJBZ0FnQmlBaGFpSUlJQWdvQWdBZ2FDZ0NBQ0FCS0FJRWFrRUJkV28yQWdBZ0JpQWxhaUlHSUFZb0FnQWdaeWdDQUNBQktBSUlha0VCZFdvMkFnQWdaaWdDQUNBQktBSU1ha0VCZFF3QkN5QVNJQVpCQW5RaUlHb2lCaUFHS0FJQUlBZ2dFaUF3UVFWMGFpSUdLQUlBYWtFQmRXbzJBZ0FnSUNBaGFpSUlJQWdvQWdBZ0JpZ0NCQ0FCS0FJRWFrRUJkV28yQWdBZ0lDQWxhaUlJSUFnb0FnQWdCaWdDQ0NBQktBSUlha0VCZFdvMkFnQWdCaWdDRENBQktBSU1ha0VCZFFzZ0tpZ0NBR28yQWdBZ0IwRUJhaUlISUI5SERRQUxDeUE1SUJFZ1dTQVBJRDRnV2tFQlFRUkJBQkFxRFFBTEN3d0NDeUFTRUJSQkFTRUhDeUE1SUN0QkVHc29BZ0FpQVNCZEtBSUFJZ1pySUN0QkRHc29BZ0FnWGlnQ0FDSUlheUFyUVFocktBSUFJZ2tnQm1zZ0swRUVheWdDQUNBSWF5QU9LQUkwUVFFZ0NTQUJheEFpSURrUUp3d0RDeUE1RUNjZ0VoQVVRUUFoQnd3Q0N5QTVFQ2RCQUNFSERBRUxRUUFoQnlBWEVDUWdEQkFVQ3lBblFTQnFKQUFnQncwQkRBVUxJQUVoQjBFQUlRejlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhkaU1BUVVCcUloNGtBQUpBQW44Q1FDQWJLQUpBQkVBZ0RpZ0NIQ0lYSUE0b0FoaEJtQUZzYWlJQlFaZ0JheWdDQUNFWUlBRkJrQUZyS0FJQUlSMGdGeWdDQkNFTklCY29BZ3dnRnlnQ0FDRVJJQmNvQWdnaEZFRUJJUVlnR3lnQ0xDSWpLQUlFSVNZZ0IwRUJSZzBEUVFBaENDQUhRUUZySWc4aENTQVhJUUVDUUNBUFFRUlBCRUFnRDBFRGNTRUpJQUVnRDBGOGNTSU1RWmdCYkdvaEFVRUFJUVlEUUNCMklCY2dCa0dZQVd4cUlnZEI2QVJxSUFkQjBBTnFJQWRCdUFKcUlBZjlYQUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFIUWVBRWFpQUhRY2dEYWlBSFFiQUNhaUFIL1Z3Q21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQjBIc0JHb2dCMEhVQTJvZ0IwRzhBbW9nQi8xY0FxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBZEI1QVJxSUFkQnpBTnFJQWRCdEFKcUlBZjlYQUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTRjJJQVpCQkdvaUJpQU1SdzBBQ3lCMklIWWdkdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNKMklIWWdkdjBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzI1QWYwYkFDRUlJQXdnRDBZTkFRc0RRQ0FJSUFFb0FxQUJJQUVvQXBnQmF5SUhJQWNnQ0VrYklnY2dBU2dDcEFFZ0FTZ0NuQUZySWdZZ0JpQUhTUnNoQ0NBQlFaZ0JhaUVCSUFsQkFXc2lDUTBBQ3d0QkFDRUdJQWhCLy8vL1Awc05BeUFlSUFoQkJYUWlSeEFjSWdFMkFpQWdBVVVOQXlBZUlBRTJBZ0FnRDBVRVFFRUJJUVlnQVJBVURBUUxJQTFySVEwZ0ZDQVJheUVNUVFJZ0prRUJkaUlCSUFGQkFrMGJJVVFnRGlnQ0pDSUhJQjFCSEd3aVhTQVlRUnhzSWw1cmFpRWtJQWNnSFVFWWJDSlJJQmhCR0d3aVVtdHFJUzRnQnlBZFFSUnNJbE1nR0VFVWJDSlVhMm9oTENBSElCMUJCSFFpVlNBWVFRUjBJbFpyYWlFdElBY2dIVUVNYkNKWElCaEJER3dpV0d0cUlTQWdCeUFkUVFOMElsa2dHRUVEZENKYWEyb2hPQ0FkSUJockloRkJCWFFoUlNBUlFRZHNJVTRnRVVFR2JDRkdJQkZCQld3aFR5QVJRUU5zSVZBZ0VVRUJkQ0ZJSUFjZ0VVRUNkQ0pBYWlFOElCSDlFU0Y2QTBBZ0hpQU5OZ0lJSUI0Z0RDSUJOZ0lvSUJjb0Fwd0JJUjhnRnlnQ3BBRWhLQ0FYS0FLZ0FTRXFJQmNvQXBnQklSb2dIa0VBTmdJNElCNGdBVFlDTkNBZVFRQTJBakFnSGlBYVFRSnZJaHcyQWl3Z0hpQXFJQnBySWd3Z0FXc2lGRFlDUENBZUlCUTJBaVFDUUNBbVFRSklJbHRGSUNnZ0gyc2lEVUVQUzNGRkJFQkJBQ0VHSUFjaENDQU5RUWhKRFFFZ0xDQUhJRkVnS2tFQ2RDSUJhaUJTSUJwQkFuUWlDV3ByYWlJK1NTQXVJQWNnQVNCVGFpQUpJRlJxYTJvaVFVbHhJQ1FnUVVrZ0xDQUhJQUVnWFdvZ0NTQmVhbXRxSWtKSmNYSWhYQ0E4SUFjZ0FTQlphaUFKSUZwcWEyb2lTVWtnT0NBSElCMGdLbW9nR0NBYWFtdEJBblJxSWtwSmNTQWdJRXBKSUR3Z0J5QUJJRmRxSUFrZ1dHcHJhaUpMU1hGeUlWOGdMU0JCU1NBc0lBY2dBU0JWYWlBSklGWnFhMm9pUTBseElDMGdQa2tnTGlCRFNYRnlJQzBnUWtrZ0pDQkRTWEZ5SVdBZ0xpQkNTU0FrSUQ1SmNTRmhJRGdnUzBrZ0lDQkpTWEVoWWlBSElBRWdDV3RxSVRJZ0RFRjhjU0VKSUI0b0FpQWlGRUVNYWlFN0lCUkJDR29oTkNBVVFRUnFJVDBnRkVFY2FpRVNJQlJCR0dvaElTQVVRUlJxSVNVZ0ZFRVFhaUVwSUJRZ0RFRUZkR29pRmtFUWF5RW5JQlpCRkdzaEx5QVdRUmhySVRFZ0ZrRWNheUU1SUJaQkJHc2hPaUFXUVFocklUVWdGa0VNYXlFMlFRQWhIQ0FNUWF3QlNTRmpJQXhCTEVraFpBTkFJQVloRUNBZVFTQnFJZ0VnQ0NBUlFRZ1FReUFCRUNZQ1FDQU1SUTBBSUJ3Z1JXd2hCa0VBSVFFQ1FBSkFJR01OQUNCaUlBZ2dPVWtnRkNBR0lESnFJamRKY1NBZ0lESkpJQWdnQmlCTGFpSVRTWEVnQ0NBR0lFcHFJaXRKSURJZ1BFdHhJQWdnQmlCSmFpSXdTU0F5SURoTGNYSnljaUFJSURGSklEY2dQVXR4Y2lBSUlDOUpJRFFnTjBseGNpQUlJQ2RKSURjZ08wdHhjaUJmY2lBVUlDdEpJQVlnUEdvaU55QTVTWEZ5SUNzZ1BVc2dNU0EzUzNGeUlDc2dORXNnTHlBM1MzRnlJQ3NnTzBzZ0p5QTNTM0Z5Y2cwQUlCUWdNRWtnQmlBNGFpSXJJRGxKY1EwQUlDc2dNVWtnTUNBOVMzRU5BQ0FySUM5SklEQWdORXR4RFFBZ01DQTdTeUFuSUN0TGNRMEFJQVlnSUdvaUt5QTVTU0FUSUJSTGNRMEFJQ3NnTVVrZ0V5QTlTM0VOQUNBcklDOUpJQk1nTkV0eERRQWdFeUE3U3lBbklDdExjUTBBQTBBZ0NDQUJRUUowYWlBVUlBRkJCWFJxSWhOQjRBQnFJQk5CUUdzZ0UwRWdhaUFUL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdDQ0FCSUJGcVFRSjBhaUFUUWVRQWFpQVRRY1FBYWlBVFFTUnFJQlA5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnU0dwQkFuUnFJQk5CNkFCcUlCTkJ5QUJxSUJOQktHb2dFLzFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JRYWtFQ2RHb2dFMEhzQUdvZ0UwSE1BR29nRTBFc2FpQVQvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FVRUVhaUlCSUFsSERRQUxJQWtpQVNBTVJnMEJDd05BSUFnZ0FVRUNkR29nRkNBQlFRVjBhaUlUS2dJQU9BSUFJQWdnQVNBUmFrRUNkR29nRXlvQ0JEZ0NBQ0FJSUFFZ1NHcEJBblJxSUJNcUFnZzRBZ0FnQ0NBQklGQnFRUUowYWlBVEtnSU1PQUlBSUFGQkFXb2lBU0FNUncwQUN3dEJBQ0VCQWtBZ1pBMEFJR0VnQmlBc2FpSVRJRFpKSUNrZ0JpQkJhaUlyU1hFZ1lDQUdJQzFxSWpBZ05ra2dLU0FHSUVOcUlqZEpjWElnSlNBM1NTQXdJRFZKY1hJZ0lTQTNTU0F3SURwSmNYSWdFaUEzU1NBV0lEQkxjWElnWEhKeUlDVWdLMGtnRXlBMVNYRnlJQ0VnSzBrZ0V5QTZTWEZ5SUJJZ0swa2dFeUFXU1hGeWNnMEFJQVlnTG1vaUV5QTJTU0FwSUFZZ1Btb2lLMGx4RFFBZ0pTQXJTU0FUSURWSmNRMEFJQ0VnSzBrZ0V5QTZTWEVOQUNBU0lDdEpJQk1nRmtseERRQWdCaUFrYWlJVElEWkpJQ2tnQmlCQ2FpSUdTWEVOQUNBVElEVkpJQVlnSlV0eERRQWdFeUE2U1NBR0lDRkxjUTBBSUJNZ0Zra2dCaUFTUzNFTkFBTkFJQWdnQVNCQWFrRUNkR29nRkNBQlFRVjBhaUlHUWZBQWFpQUdRZEFBYWlBR1FUQnFJQWI5WEFJUS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnVDJwQkFuUnFJQVpCOUFCcUlBWkIxQUJxSUFaQk5Hb2dCdjFjQWhUOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JHYWtFQ2RHb2dCa0g0QUdvZ0JrSFlBR29nQmtFNGFpQUcvVndDR1AxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0NDQUJJRTVxUVFKMGFpQUdRZndBYWlBR1Fkd0FhaUFHUVR4cUlBYjlYQUljL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQlFRUnFJZ0VnQ1VjTkFBc2dDU0lCSUF4R0RRRUxBMEFnQ0NBQklFQnFRUUowYWlBVUlBRkJCWFJxSWdZcUFoQTRBZ0FnQ0NBQklFOXFRUUowYWlBR0tnSVVPQUlBSUFnZ0FTQkdha0VDZEdvZ0Jpb0NHRGdDQUNBSUlBRWdUbXBCQW5ScUlBWXFBaHc0QWdBZ0FVRUJhaUlCSUF4SERRQUxDeUFjUVFGcUlSd2dFRUVJYWlFR0lBZ2dSV29oQ0NBUVFROXFJQTFKRFFBTERBRUxJQTBnRFVFRGRpSUdJQ1lnQmlBbVNSc2lFMjVCZUhFaEZpQU5RWGh4SVFaQkFDRUpJQWNoQ0FOQVFUQVFHQ0lRUlEwRUlCQWdSeEFjSWpJMkFnQWdNa1VFUUNBakVDUWdFQkFVUVFBTUJnc2dFQ0FJTmdJb0lCQWdFVFlDSkNBUUlBdzJBaUFnRUNBVU5nSWNJQkJCQURZQ0dDQVFJQUUyQWhRZ0VFRUFOZ0lRSUJBZ0hEWUNEQ0FRSUFFMkFnZ2dFQ0FVTmdJRUlCQWdCaUFKSUJac2F5QVdJQWxCQVdvaUNTQVRSaHNpTWpZQ0xDQWpRUXdnRUJBeklBZ2dFU0F5YkVFQ2RHb2hDQ0FKSUJOSERRQUxJQ01RSkFzQ1FDQUdJQTFQRFFBZ0hrRWdhaUlCSUFnZ0VTQU5JQVpySWhRUVF5QUJFQ1lnREVVTkFDQWVLQUlnSWhZZ0trRUZkQ0FvUVFKMGFpQUdJQjlxUVFKMElCcEJCWFJxYTJwQklHc2hHaUFVUVh4eElSQWdRQ0FvSUFaQmYzTnFJQjlyYkNFcVFRQWhDUU5BSUJZZ0NVRUZkR29oSEVFQUlRRUNRQUpBSUJSQkJFa05BQ0FhSUFnZ0NVRUNkQ0lCYWlJR0lBZ2dBU0FxYW1vaUV5QUdJQk5KRzBzRVFFRUFJUUVnRmlBR0lCTWdCaUFUU3h0QkJHcEpEUUVMSUFuOUVTRjMvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUFJWFpCQUNFQkEwQWdDQ0IySUhyOXRRRWdkLzJ1QVNKNC9Sc0FRUUowYWlBY0lBRkJBblJxL1FBQ0FDSjUvUjhBT0FJQUlBZ2dlUDBiQVVFQ2RHb2dlZjBmQVRnQ0FDQUlJSGo5R3dKQkFuUnFJSG45SHdJNEFnQWdDQ0I0L1JzRFFRSjBhaUI1L1I4RE9BSUFJSGI5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGRpQUJRUVJxSWdFZ0VFY05BQXNnRUNJQklCUkdEUUVMQTBBZ0NDQUJJQkZzSUFscVFRSjBhaUFjSUFGQkFuUnFLZ0lBT0FJQUlBRkJBV29pQVNBVVJ3MEFDd3NnQ1VFQmFpSUpJQXhIRFFBTEN5QWVJQTBnSGlnQ0NDSVFheUlUTmdJRUlCY29BcHdCSVFFZ0hpQVROZ0ljSUI3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FVRUNieUlxL1J3QUlCRDlIQUlpZHYwTEFnd0NRQ0JiUlNBTVFROUxjVVVFUUNBSElRRWdERUVJU1EwQklBMUJmbkVoT3lBTlFRRnhJVFFnRTBGK2NTRTlJQk5CQVhFaEVpQVFRWDV4SVNFZ0VFRUJjU0VsSUNnZ0gwRi9jMm9oTWlBZUtBSUFJaFFnS2tFRmRDSUdhaUVXSUJRZ0JtdEJJR29oSENBUUlCRnNRUUowSVNrZ0RDRUpBMEJCQUNFSVFRQWhCZ0pBQWtBQ1FDQVFEZ0lDQVFBTEEwQWdGaUFJUVFaMGFpSWFJQUVnQ0NBUmJFRUNkR29pSi8wQUFnRDlDd0lBSUJvZ0ovMEFBaEQ5Q3dJUUlCWWdDRUVCY2lJYVFRWjBhaUluSUFFZ0VTQWFiRUVDZEdvaUd2MEFBaEQ5Q3dJUUlDY2dHdjBBQWdEOUN3SUFJQWhCQW1vaENDQUdRUUpxSWdZZ0lVY05BQXNMSUNWRkRRQWdGaUFJUVFaMGFpSUdJQUVnQ0NBUmJFRUNkR29pQ1AwQUFnRDlDd0lBSUFZZ0NQMEFBaEQ5Q3dJUUN3SkFJQTBnRUVZTkFDQUJJQ2xxSVJwQkFDRUlRUUFoQmlBUUlESkhCRUFEUUNBY0lBaEJCblJxSWljZ0dpQUlJQkZzUVFKMGFpSXYvUUFDQVAwTEFnQWdKeUF2L1FBQ0VQMExBaEFnSENBSVFRRnlJaWRCQm5ScUlpOGdHaUFSSUNkc1FRSjBhaUluL1FBQ0VQMExBaEFnTHlBbi9RQUNBUDBMQWdBZ0NFRUNhaUVJSUFaQkFtb2lCaUE5UncwQUN3c2dFa1VOQUNBY0lBaEJCblJxSWdZZ0dpQUlJQkZzUVFKMGFpSUkvUUFDQVAwTEFnQWdCaUFJL1FBQ0VQMExBaEFMSUI0UUpnSkFJQTFGRFFCQkFDRUlRUUFoQmlBeUJFQURRQ0FCSUFnZ0VXeEJBblJxSWhvZ0ZDQUlRUVYwYWlJbi9RQUNBUDBMQWdBZ0dpQW4vUUFDRVAwTEFoQWdBU0FJUVFGeUlob2dFV3hCQW5ScUlpY2dGQ0FhUVFWMGFpSWEvUUFDRVAwTEFoQWdKeUFhL1FBQ0FQMExBZ0FnQ0VFQ2FpRUlJQVpCQW1vaUJpQTdSdzBBQ3dzZ05FVU5BQ0FCSUFnZ0VXeEJBblJxSWdZZ0ZDQUlRUVYwYWlJSS9RQUNBUDBMQWdBZ0JpQUkvUUFDRVAwTEFoQUxJQUZCSUdvaEFTQUpRUWhySWdsQkIwc05BQXNNQVF0QkFTQU1RUU4ySWdFZ1JDQUJJRVJKR3lJSklBbEJBVTBiSVJZZ0RDQUpia0Y0Y1NFVUlBeEJlSEVoSEVFQUlRWWdCeUVCQTBCQk1CQVlJZ2hGRFFRZ0NDQkhFQndpR2pZQ0FDQWFSUVJBSUNNUUpDQUlFQlJCQUF3R0N5QUlJQUUyQWlnZ0NDQVJOZ0lrSUFnZ0RUWUNJQ0FJSUJNMkFod2dDQ0IyL1FzQ0RDQUlJQkEyQWdnZ0NDQVROZ0lFSUFnZ0hDQUdJQlJzYXlBVUlBWkJBV29pQmlBSlJoc2lHallDTENBalFRMGdDQkF6SUFFZ0drRUNkR29oQVNBR0lCWkhEUUFMSUNNUUpBc0NRQ0FNUVFkeElnWkZEUUFnS2tFRmRDRWFJQjRvQWdBaENRSkFJQkJGRFFBZ0NTQWFhaUVVSUFaQkFuUWhGa0VBSVFnZ0VFRUJSd1JBSUJCQmZuRWhLa0VBSVJ3RFFDQVVJQWhCQm5ScUlBRWdDQ0FSYkVFQ2RHb2dGaEFXR2lBVUlBaEJBWElpTWtFR2RHb2dBU0FSSURKc1FRSjBhaUFXRUJZYUlBaEJBbW9oQ0NBY1FRSnFJaHdnS2tjTkFBc0xJQkJCQVhGRkRRQWdGQ0FJUVFaMGFpQUJJQWdnRVd4QkFuUnFJQllRRmhvTEFrQWdEU0FRUmcwQUlBa2dHbXRCSUdvaEZpQUJJQkFnRVd4QkFuUnFJUndnQmtFQ2RDRWFRUUFoQ0NBUUlDZ2dIMEYvYzJwSEJFQWdFMEYrY1NFUVFRQWhGQU5BSUJZZ0NFRUdkR29nSENBSUlCRnNRUUowYWlBYUVCWWFJQllnQ0VFQmNpSXFRUVowYWlBY0lCRWdLbXhCQW5ScUlCb1FGaG9nQ0VFQ2FpRUlJQlJCQW1vaUZDQVFSdzBBQ3dzZ0UwRUJjVVVOQUNBV0lBaEJCblJxSUJ3Z0NDQVJiRUVDZEdvZ0doQVdHZ3NnSGhBbUlBMUZEUUFnQmtFQ2RDRVFRUUFoQ0NBZlFRRnFJQ2hIQkVBZ0RVRitjU0VVUVFBaEJnTkFJQUVnQ0NBUmJFRUNkR29nQ1NBSVFRVjBhaUFRRUJZYUlBRWdDRUVCY2lJVElCRnNRUUowYWlBSklCTkJCWFJxSUJBUUZob2dDRUVDYWlFSUlBWkJBbW9pQmlBVVJ3MEFDd3NnRFVFQmNVVU5BQ0FCSUFnZ0VXeEJBblJxSUFrZ0NFRUZkR29nRUJBV0dnc2dGMEdZQVdvaEZ5QVBRUUZySWc4TkFBdEJBUXdDQzBFQklRWWdEaWdDSENJWElBZEJtQUZzYWlJYVFaZ0JheUk4S0FJQUlCcEJrQUZyS0FJQVJnMENJQnBCbEFGcklpb29BZ0FnR2tHTUFXc29BZ0JHRFFJZ0Z5Z0NCQ0VOSUJjb0Fnd2hFQ0FYS0FJQUlSRWdGeWdDQ0NFWUlBNG9Ba1FoRkNBT0tBSkFJUk1nRGlnQ1BDRVdJQTRvQWpnaEhTQU9JQWNRWlNJb1JRUkFRUUFoQmd3REN5QUhRUUZHQkVBZ0tDQWFRUkJyS0FJQUlnRWdQQ2dDQUNJSGF5QWFRUXhyS0FJQUlDb29BZ0FpQ0dzZ0drRUlheWdDQUNJSklBZHJJQnBCQkdzb0FnQWdDR3NnRGlnQ05FRUJJQWtnQVdzUUlpQW9FQ2NNQXd0QkFDRUlBa0FDUUNBSFFRRnJJZ2xCQkVrRVFDQUpJUVlnRnlFQkRBRUxJQWxCQTNFaEJpQVhJQWxCZkhFaUQwR1lBV3hxSVFFRFFDQjJJQmNnREVHWUFXeHFJZ2hCNkFScUlBaEIwQU5xSUFoQnVBSnFJQWo5WEFLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlQUVhaUFJUWNnRGFpQUlRYkFDYWlBSS9Wd0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0NFSHNCR29nQ0VIVUEyb2dDRUc4QW1vZ0NQMWNBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQWhCNUFScUlBaEJ6QU5xSUFoQnRBSnFJQWo5WEFLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0YySUF4QkJHb2lEQ0FQUncwQUN5QjJJSFlnZHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8yNUFTSjJJSFlnZHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VJSUFrZ0QwWU5BUXNEUUNBSUlBRW9BcUFCSUFFb0FwZ0JheUlKSUFnZ0NVc2JJZ2dnQVNnQ3BBRWdBU2dDbkFGcklna2dDQ0FKU3hzaENDQUJRWmdCYWlFQklBWkJBV3NpQmcwQUN3c0NRQ0FJUVlDQWdNQUFUdzBBSUI0Z0NFRUZkQkFjSWlZMkFpQWdKa1VOQUNBZUlDWTJBZ0FDUUNBSEJFQWdFQ0FOYXlFTklCZ2dFV3NoQ0NBbVFTQnFJVElnQjYwaGZTQVVyU0dBQVNBVHJTR0JBU0FXclNGK0lCMnRJWUlCSUE0b0FoUWlQYTBoZ3dGQ0FTRjhBMEFnSGlBTk5nSUlJQjRnQ0RZQ0tDQVhLQUtrQVNFSElCY29BcUFCSVFZZ0Z5Z0NuQUVoQVNBZUlCY29BcGdCSWdsQkFtOGlKRFlDTENBZUlBRkJBbThpT3pZQ0RDQWVJQVlnQ1dzaUl5QUlheUl1TmdJa0lCNGdCeUFCYXlJUUlBMXJJalEyQWdRZ0hTSVBJUWtnRmlJQklRd2dFeUlHSVJ3Z0ZDSUhJUkVDUUNCOElJTUJVUTBBSUQwZ2ZLZHJJUmhCQUNFTVFRQWhDU0FQQkVCQ2Z5QVlyU0ovaGtKL2hTQ0NBWHdnZjRpbklRa0xJQllFUUVKL0lCaXRJbitHUW4rRklINThJSCtJcHlFTUMwRUFJUWRCQUNFR0lCTUVRRUovSUJpdEluK0dRbitGSUlFQmZDQi9pS2NoQmdzZ0ZBUkFRbjhnR0swaWY0WkNmNFVnZ0FGOElIK0lweUVIQzBFQUlSeEJBQ0VQUVFFZ0dFRUJhM1FpSHlBZFNRUkFJQjBnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFUEN5QVRJQjlMQkVBZ0V5QWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUndMUVFBaEVVRUFJUUVnRmlBZlN3UkFJQllnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFQkN5QVVJQjlORFFBZ0ZDQWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUkVMUVg4Z0hDQVhLQUswQVNJWWF5SWZRUUFnSENBZlR4c2lIMEVFYWlJY0lCd2dIMGtiSWg4Z0xpQWZJQzVKR3lJZ1FYOGdCaUFYS0FMWUFTSWZheUljUVFBZ0JpQWNUeHNpQmtFRWFpSWNJQVlnSEVzYklnWWdDQ0FHSUFoSkd5STRJQ1FiUVFGMElnWWdPQ0FnSUNRYlFRRjBRUUZ5SWh3Z0JpQWNTeHNpSENBalNTRXVJQThnR0dzaUJrRUFJQVlnRDAwYklnWkJCR3NpRDBFQUlBWWdEMDhiSWl3Z0NTQWZheUlHUVFBZ0JpQUpUUnNpQmtFRWF5SUpRUUFnQmlBSlR4c2lMU0FrRzBFQmRDSVNJQzBnTENBa0cwRUJkRUVCY2lJaFNTRWxJQXdnRnlnQ3VBRWlDV3NpQmtFQUlBWWdERTBiSWdaQkJHc2lEMEVBSUFZZ0QwOGJJZ1loRHlBQklCY29BdHdCSWd4ckloaEJBQ0FCSUJoUEd5SUJRUVJySWhoQkFDQUJJQmhQR3lJQklSOUJmeUFISUFscklnbEJBQ0FISUFsUEd5SUhRUVJxSWdrZ0J5QUpTeHNpQnlBTklBY2dEVWtiSWdraEIwRi9JQkVnREdzaURFRUFJQXdnRVUwYklneEJCR29pRVNBTUlCRkxHeUlNSURRZ0RDQTBTUnNpR0NFUklEc0VRQ0FCSVE4Z0JpRWZJQWtoRVNBWUlRY0xJQndnSXlBdUd5RXVJQklnSVNBbEd5RWNJQjRnSURZQ1BDQWVJQ3cyQWpnZ0hpQTROZ0kwSUI0Z0xUWUNNQUpBSUJCQkNFa0VRRUVISVFoQkFDRU1EQUVMSURJZ0pFRUZkQ0lNYXlBc1FRWjBhaUUwSUF3Z0ptb2dMVUVHZEdvaEVpQUlJQ0JxSVNBZ0NDQXNhaUVzSUEwZ0dHb2hJU0FCSUExcUlTVWdKaUFjUVFWMGFpRXBRUUFoREFOQUFrQUNRQ0FKSUF4TElBeEJCM0lpQ0NBR1QzRU5BQ0FNSUNGSklBZ2dKVTl4RFFBZ0RFRUlhaUVNREFFTFFRZ2dFQ0FNYXlJSUlBaEJDRThiSVNkQkFDRUlBMEFnS0NBdElBZ2dER29pSkNBNElDUkJBV29pTHlBU0lBaEJBblFpTVdwQkVFRUFFQ0lnS0NBc0lDUWdJQ0F2SURFZ05HcEJFRUVBRUNJZ0NFRUJhaUlJSUNkSERRQUxJQjVCSUdvUUppQW9JQndnRENBdUlBeEJDR29pRENBcFFRaEJBVUVBRUNwRkRRVUxJQXhCQjNJaUNDQVFTUTBBQ3dzQ1FDQU1JQkJQRFFBZ0JpQUlUU0FKSUF4TGNVVUVRQ0FNSUEwZ0dHcFBEUUVnQ0NBQklBMXFTUTBCQ3lBZVFTQnFJUWhCQUNFa0lCQWdER3NpTFFSQUEwQWdLQ0FJS0FJUUlpQWdEQ0FrYWlJc0lBZ29BaFFnTEVFQmFpSTRJQ1JCQW5RaU5DQUlLQUlBSUFnb0FneEJCWFJxSUNCQkJuUnFha0VRUVFBUUlpQW9JQWdvQWhnaUlDQUlLQUlJSWhKcUlDd2dDQ2dDSENBU2FpQTRJQWdvQWdBZ0NDZ0NERUVGZEdzZ0lFRUdkR29nTkdwQklHcEJFRUVBRUNJZ0pFRUJhaUlrSUMxSERRQUxDeUFJRUNZZ0tDQWNJQXdnTGlBUUlDWWdIRUVGZEdwQkNFRUJRUUFRS2tVTkF3c2dIaUFZTmdJY0lCNGdBVFlDR0NBZUlBazJBaFFnSGlBR05nSVFJQndnTGtrRVFDQUhRUUYwSWdjZ0VVRUJkRUVCY2lJSUlBY2dDRXNiSWdjZ0VDQUhJQkJKR3lFSElESWdPMEVGZENJSWF5QUJRUVowYWlFTUlBZ2dKbW9nQmtFR2RHb2hDQ0FOSUJocUlSRWdBU0FOYWlFTklDWWdEMEVCZENJQklCOUJBWFJCQVhJaUR5QUJJQTlKR3lJUFFRVjBhaUVZQTBBZ0tDQWNJQVpCQ0NBdUlCeHJJZ0VnQVVFSVR4c2dIR29pQVNBSklBaEJBVUVRRUNJZ0tDQWNJQTBnQVNBUklBeEJBVUVRRUNJZ0hoQW1JQ2dnSENBUElBRWdCeUFZUVFGQkNFRUFFQ3BGRFFRZ0hFRUlhaUljSUM1SkRRQUxDeUFYUVpnQmFpRVhJQ01oQ0NBUUlRMGdmRUlCZkNKOElIMVNEUUFMQzBFQklRWWdLQ0FhUVJCcktBSUFJZ0VnUENnQ0FDSUhheUFhUVF4cktBSUFJQ29vQWdBaUNHc2dHa0VJYXlnQ0FDSUpJQWRySUJwQkJHc29BZ0FnQ0dzZ0RpZ0NORUVCSUFrZ0FXc1FJaUFvRUNjZ0poQVVEQVFMSUNnUUp5QW1FQlJCQUNFR0RBTUxJQ2dRSjBFQUlRWU1BZ3NnSXhBa1FRQUxJUVlnSGlnQ0lCQVVDeUFlUVVCckpBQWdCZzBBREFRTElCbEJ1QWhxSVJrZ0NrRTBhaUVLSUE1QnpBQnFJUTRnQzBFQmFpSUxJQlVvQWhCSkRRQUxJQnNvQWlBaEdTQWJLQUlVS0FJQUlSVUxBa0FnR1NnQ0VDSU9SUTBBSUJzb0FrUU5BQ0FWS0FJVUlnb29BaHdoQVFKQUFrQUNRQUpBQWtBZ0d5Z0NRQ0lHQkVBZ0ZTZ0NFQ0lMUVFOSkRRSUNRQ0FLS0FJWUlnY2dDaWdDWkVZRVFDQUhJQW9vQXJBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SkN3SkFJQnNvQWhnb0FoZ2lDQ2dDSkNJSklBZ29BbGhIRFFBZ0NTQUlLQUtNQVVjTkFDQUJJQWRCbUFGc0lnaHFJZ0ZCakFGcktBSUFJQUZCbEFGcktBSUFheUFCUVpBQmF5Z0NBQ0FCUVpnQmF5Z0NBR3RzSWdFZ0NpZ0NhQ0FJYWlJSFFZd0JheWdDQUNBSFFaUUJheWdDQUdzZ0IwR1FBV3NvQWdBZ0IwR1lBV3NvQWdCcmJFY05BQ0FLS0FLMEFTQUlhaUlIUVl3QmF5Z0NBQ0FIUVpRQmF5Z0NBR3NnQjBHUUFXc29BZ0FnQjBHWUFXc29BZ0JyYkNBQlJnMENDeUF6UVFGQnhNNEFRUUFRRXd3SUN5QVZLQUlRSWd0QkEwa05BUUpBSUJzb0FoZ29BaGdpQnlnQ0pDSUlJQWNvQWxoSERRQWdDQ0FIS0FLTUFTSUpSdzBBSUFFZ0NFR1lBV3dpQjJvaUFTZ0NsQUVnQVNnQ2pBRnJJQUVvQXBBQklBRW9Bb2dCYTJ3aUFTQUhJQW9vQW1ocUlnY29BcFFCSUFjb0Fvd0JheUFIS0FLUUFTQUhLQUtJQVd0c1J3MEFJQW9vQXJRQklBbEJtQUZzYWlJSEtBS1VBU0FIS0FLTUFXc2dCeWdDa0FFZ0J5Z0NpQUZyYkNBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SEN5QU9RUUpHQkVBZ0dTZ0M2Q3RGRFFVZ0MwRUNkQkFZSWd0RkRRY2dGU2dDRUNJSlJRMEVJQnNvQWtBRVFFRUFJUlVnQ1VFTFRRMERJQXBCSkdvaUNDQUxJQWxCQW5ScVNRUi9JQW9nQ1VITUFHeHFRU1JySUF0TEJVRUFDdzBESUFwQmlBSnFJUThnQ2tHOEFXb2hEQ0FLUWZBQWFpRVhJQW9nQ1VGOGNTSUdRY3dBYkdvaENrRUFJUTREUUNBTElBNUJBblJxSUE4Z0RrSE1BR3dpQjJvZ0J5QU1haUFISUJkcUlBY2dDR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQU9RUVJxSWc0Z0JrY05BQXNnQmlBSlJ3MEVEQVVMUVFBaEZRSkFJQWxCREVrRVFFRUFJUVlNQVFzZ0NrRTBhaUVJQWtBZ0N5QUtJQWxCekFCc2FrRVVhMDhOQUNBSUlBc2dDVUVDZEdwUERRQkJBQ0VHREFFTElBcEJtQUpxSVE4Z0NrSE1BV29oRENBS1FZQUJhaUVYSUFvZ0NVRjhjU0lHUWN3QWJHb2hDa0VBSVE0RFFDQUxJQTVCQW5ScUlBOGdEa0hNQUd3aUIyb2dCeUFNYWlBSElCZHFJQWNnQ0dyOVhBSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FPUVFScUlnNGdCa2NOQUFzZ0JpQUpSZzBGQ3dKQUlBbEJBM0VpQjBVRVFDQUdJUTRNQVFzZ0JpRU9BMEFnQ3lBT1FRSjBhaUFLS0FJME5nSUFJQTVCQVdvaERpQUtRY3dBYWlFS0lCVkJBV29pRlNBSFJ3MEFDd3NnQmlBSmEwRjhTdzBFSUF0QkRHb2hCaUFMUVFocUlRZ2dDMEVFYWlFUEEwQWdDeUFPUVFKMElnZHFJQW9vQWpRMkFnQWdCeUFQYWlBS0tBS0FBVFlDQUNBSElBaHFJQW9vQXN3Qk5nSUFJQVlnQjJvZ0NpZ0NtQUkyQWdBZ0NrR3dBbW9oQ2lBT1FRUnFJZzRnQ1VjTkFBc01CQXNnR1NnQzBDc29BaFJCQVVZRVFDQUdCRUFnQ2lnQ0pDQUtLQUp3SUFvb0Fyd0JJQUVRYUF3R0N5QUtLQUkwSUFvb0FvQUJJQW9vQXN3QklBRVFhQXdGQ3lBR0JFQWdDaWdDSkNBS0tBSndJQW9vQXJ3QklBRVFad3dGQ3lBS0tBSTBJQW9vQW9BQklBb29Bc3dCSUFFUVp3d0VDeUEvSUFzMkFnQWdNMEVCUVlIUEFDQS9FQk1NQXd0QkFDRUdDd0pBSUFsQkEzRWlCMFVFUUNBR0lRNE1BUXNnQmlFT0EwQWdDeUFPUVFKMGFpQUtLQUlrTmdJQUlBNUJBV29oRGlBS1Fjd0FhaUVLSUJWQkFXb2lGU0FIUncwQUN3c2dCaUFKYTBGOFN3MEFJQXRCREdvaEJpQUxRUWhxSVFnZ0MwRUVhaUVQQTBBZ0N5QU9RUUowSWdkcUlBb29BaVEyQWdBZ0J5QVBhaUFLS0FKd05nSUFJQWNnQ0dvZ0NpZ0N2QUUyQWdBZ0JpQUhhaUFLS0FLSUFqWUNBQ0FLUWJBQ2FpRUtJQTVCQkdvaURpQUpSdzBBQ3dzZ0d5Z0NHQ2dDR0NnQ0lCb0NmeUFaS0FMb0t5RUhRUUFoRjBFQUlBbEJBM1FRR0NJT1JRMEFHZ0pBSUFGRkRRQWdDVVVOQUNBT0lBbEJBblJxSVJFZ0NVRjhjU0VOSUFsQkEzRWhHU0FKUVFGcklSQURRRUVBSVJWQkFDRUlJQkJCQTA4RVFBTkFJQTRnRlVFQ2RDSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlBNGdCa0VFY2lJUGFpQUxJQTlxS0FJQUtnSUFPQUlBSUE0Z0JrRUljaUlQYWlBTElBOXFLQUlBS2dJQU9BSUFJQTRnQmtFTWNpSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlCVkJCR29oRlNBSVFRUnFJZ2dnRFVjTkFBc0xRUUFoQ2lBWkJFQURRQ0FPSUJWQkFuUWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQVZRUUZxSVJVZ0NrRUJhaUlLSUJsSERRQUxDMEVBSVFZZ0J5RVZBMEFnRVNBR1FRSjBJaFJxSWdoQkFEWUNBRU1BQUFBQUlZUUJRUUFoQ2tFQUlROGdFRUVDU3dSQUEwQWdDQ0FWS2dJQUlBNGdDa0VDZEdvaURDb0NBSlFnaEFHU0lvUUJPQUlBSUFnZ0ZTb0NCQ0FNS2dJRWxDQ0VBWklpaEFFNEFnQWdDQ0FWS2dJSUlBd3FBZ2lVSUlRQmtpS0VBVGdDQUNBSUlCVXFBZ3dnRENvQ0RKUWdoQUdTSW9RQk9BSUFJQXBCQkdvaENpQVZRUkJxSVJVZ0QwRUVhaUlQSUExSERRQUxDMEVBSVF3Z0dRUkFBMEFnQ0NBVktnSUFJQTRnQ2tFQ2RHb3FBZ0NVSUlRQmtpS0VBVGdDQUNBS1FRRnFJUW9nRlVFRWFpRVZJQXhCQVdvaURDQVpSdzBBQ3dzZ0N5QVVhaUlJSUFnb0FnQWlDRUVFYWpZQ0FDQUlJSVFCT0FJQUlBWkJBV29pQmlBSlJ3MEFDeUFYUVFGcUloY2dBVWNOQUFzTElBNFFGRUVCQ3lBTEVCUkZEUUlMSUJzb0FoUW9BZ0FpRUNnQ0VFVUVRRUVCSVNJTUFnc2dHeWdDSUNnQzBDc2lGVUc0Q0dvaEZDQVZRYlFJYWlFVElCc29Ba1FoRVNBUUtBSVVJUWNnR3lnQ0dDZ0NHQ0VJUVFBaEZ3TkFBa0FnRVFSQUlCRWdGMEVDZEdvb0FnQkZEUUVMSUFjb0Fod2lBU0FJS0FJa1FaZ0JiR29oQ3dKL0lCc29Ba0JGQkVBZ0N5Z0NsQUVnQ3lnQ2pBRnJJUVlnQ3lnQ2tBRWdDeWdDaUFGcklRRkJBQ0VKUVRRTUFRc2dBU0FIS0FJWVFaZ0JiR29pQmtHUUFXc29BZ0FnQ3lnQ0NDQUxLQUlBYXlJQklBWkJtQUZyS0FJQWFtc2hDU0FMS0FJTUlBc29BZ1JySVFaQkpBc2hEeUFJS0FJWUlRc0NmeUFJS0FJZ0JFQkJBU0FMUVFGcmRDSUxRUUZySVE1QkFDQUxhd3dCQzBGL0lBdDBRWDl6SVE1QkFBc2hEU0FCUlEwQUlBWkZEUUFnQnlBUGFpZ0NBQ0VpSUJVb0FoUkJBVVlFUUNBVUlCZEJ1QWhzSWd0cUlSWWdDeUFUYWlFWUlBRkJBWEVoTXlBQlFRSjBJUjBnQVVGOGNTSVBRUUowSVNNZ0R2MFJJWGdnRGYwUklYWkJBQ0VNSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBWUlCMGdJbXBKSUJZZ0lrdHhEUUFnSWlBamFpRVpJQlg5Q1FLMENDRjVRUUFoQ3dOQUlDSWdDMEVDZEdvaUNpQjJJSGtnQ3YwQUFnRDlyZ0VpZWlCNC9iWUJJSG9nZHYwNS9WTDlDd0lBSUF0QkJHb2lDeUFQUncwQUN5QVBJZ3NnQVVZTkFnd0JDeUFpSVJsQkFDRUxDeUFMUVFGeUlRb2dNd1JBSUJrZ0RTQVZLQUswQ0NBWktBSUFhaUlMSUE0Z0N5QU9TQnNnQ3lBTlNCczJBZ0FnR1VFRWFpRVpJQW9oQ3dzZ0FTQUtSZzBBQTBBZ0dTQU5JQlVvQXJRSUlCa29BZ0JxSWdvZ0RpQUtJQTVJR3lBS0lBMUlHellDQUNBWklBMGdGU2dDdEFnZ0dTZ0NCR29pQ2lBT0lBb2dEa2diSUFvZ0RVZ2JOZ0lFSUJsQkNHb2hHU0FMUVFKcUlnc2dBVWNOQUFzTElCa2dDVUVDZEdvaElpQU1RUUZxSWd3Z0JrY05BQXNNQVFzZ0RxMGhmQ0FOckNHQUFVRUFJUXdEUUVFQUlRc0RRQ0FpQW44Z0RpQWlLZ0lBSW9RQlF3QUFBRTllRFFBYUlBMGdoQUZEQUFBQXoxME5BQm9nRFNBVk5BSzBDQUovSUlRQmtDS0VBWXREQUFBQVQxMEVRQ0NFQWFnTUFRdEJnSUNBZ0hnTHJId2lmU0I4SUh3Z2ZWVWJweUI5SUlBQlV4c0xOZ0lBSUNKQkJHb2hJaUFMUVFGcUlnc2dBVWNOQUFzZ0lpQUpRUUowYWlFaUlBeEJBV29pRENBR1J3MEFDd3NnQjBITUFHb2hCeUFWUWJnSWFpRVZJQWhCTkdvaENFRUJJU0lnRjBFQmFpSVhJQkFvQWhCSkRRQUxEQUVMUVFBaElpQUZRUUZCaHhwQkFCQVRDeUEvUVJCcUpBQWdJa1VFUUNCTkVEUWdBQ0FBS0FJSVFZQ0FBbkkyQWdnZ0JVRUJRWmJaQUVFQUVCTU1BUXNDUUNBQ1JRMEFBbjhnQWlFSFFRQWhCZ0pBSUFBb0F1Z0JJZ3BCQVJCZElnRkJmMFlOQUNBQklBTkxEUUJCQVNBS0tBSVlJZ0VvQWhCRkRRRWFJQUVvQWhnaER5QUtLQUlVS0FJQUtBSVVJUmNEUUNBUEtBSVlJZ0ZCQjNFaEFpQUJRUU4ySVFNZ0Z5Z0NIQ0lHSUE4b0FpUkJtQUZzYWlFQkFuOGdDaWdDUUFSQUlBWWdGeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQUVvQWdnZ0FTZ0NBR3NpQ0NBR1FaZ0JheWdDQUdwcklRd2dBU2dDRENBQktBSUVheUVPUVNRTUFRc2dBU2dDbEFFZ0FTZ0NqQUZySVE0Z0FTZ0NrQUVnQVNnQ2lBRnJJUWhCQUNFTVFUUUxJQmRxS0FJQUlRRUNRQUpBQWtBQ1FBSkFRUVFnQXlBQ1FRQkhhaUlDSUFKQkEwWWJRUUZyRGdRQkFnUUFCQXNnRGtVTkF5QUlJQXhxSVFZZ0NFRUNkQ0VDSUE1QkJFOEVRQ0FPUVh4eElRdEJBQ0VJQTBBZ0J5QUJJQUlRRmlFSElBRWdCa0VDZENJRGFpSUpJQU5xSWd3Z0Eyb2lGU0FEYWlFQklBSWdCMm9nQ1NBQ0VCWWdBbW9nRENBQ0VCWWdBbW9nRlNBQ0VCWWdBbW9oQnlBSVFRUnFJZ2dnQzBjTkFBc0xRUUFoQ0NBT1FRTnhJZ05GRFFNRFFDQUhJQUVnQWhBV0lRY2dBU0FHUVFKMGFpRUJJQUlnQjJvaEJ5QUlRUUZxSWdnZ0EwY05BQXNNQXdzZ0RrVWdDRVZ5SVFJZ0R5Z0NJRVVOQVNBQ0RRSWdDRUVDZENFVklBaEJmSEVpQTBFQ2RDRVpRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0NHcEpJQUVnRldvZ0IwdHhEUUFnQXlBSGFpQUJJQmxxSVFaQkFDRUxBMEFnQnlBTGFpQUJJQXRCQW5ScS9RQUNBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBOQUFRSURBQUFBQUFBQUFBQUFBQUFBUDFhQUFBQUlBdEJCR29pQ3lBRFJ3MEFDeUVISUFNaUFpQUlSZzBDREFFTElBRWhCa0VBSVFJTFFRQWhDeUFJSUFJaUFXdEJCM0VpRFFSQUEwQWdCeUFHS0FJQU9nQUFJQUZCQVdvaEFTQUhRUUZxSVFjZ0JrRUVhaUVHSUF0QkFXb2lDeUFOUncwQUN3c2dBaUFJYTBGNFN3MEFBMEFnQnlBR0tBSUFPZ0FBSUFjZ0JpZ0NCRG9BQVNBSElBWW9BZ2c2QUFJZ0J5QUdLQUlNT2dBRElBY2dCaWdDRURvQUJDQUhJQVlvQWhRNkFBVWdCeUFHS0FJWU9nQUdJQWNnQmlnQ0hEb0FCeUFIUVFocUlRY2dCa0VnYWlFR0lBRkJDR29pQVNBSVJ3MEFDd3NnQmlBTVFRSjBhaUVCSUFsQkFXb2lDU0FPUncwQUN3d0NDeUFPUlNBSVJYSWhBaUFQS0FJZ0JFQWdBZzBDSUFoQkFuUWhGU0FJUVFGMElSa2dDRUY4Y1NJRFFRSjBJUTBnQTBFQmRDRVFRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0dXcEpJQUVnRldvZ0IwdHhEUUFnQVNBTmFpRUdJQWNnRUdwQkFDRUxBMEFnQnlBTFFRRjBhaUFCSUF0QkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBRUVCUWdKREEwQUFRQUJBQUVBQWYxYkFRQUFJQXRCQkdvaUN5QURSdzBBQ3lFSElBTWlBaUFJUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ3lBSUlBSWlBV3RCQjNFaUVRUkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBdEJBV29pQ3lBUlJ3MEFDd3NnQWlBSWEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUlSdzBBQ3dzZ0JpQU1RUUowYWlFQklBbEJBV29pQ1NBT1J3MEFDd3dDQ3lBQ0RRRWdDRUVDZENFVklBaEJBWFFoR1NBSVFYeHhJZ05CQW5RaERTQURRUUYwSVJCQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFaYWtrZ0FTQVZhaUFIUzNFTkFDQUJJQTFxSVFZZ0J5QVFha0VBSVFzRFFDQUhJQXRCQVhScUlBRWdDMEVDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0MwRUVhaUlMSUFOSERRQUxJUWNnQXlJQ0lBaEdEUUlNQVFzZ0FTRUdRUUFoQWd0QkFDRUxJQWdnQWlJQmEwRUhjU0lSQkVBRFFDQUhJQVlvQWdBN0FRQWdBVUVCYWlFQklBZEJBbW9oQnlBR1FRUnFJUVlnQzBFQmFpSUxJQkZIRFFBTEN5QUNJQWhyUVhoTERRQURRQ0FISUFZb0FnQTdBUUFnQnlBR0tBSUVPd0VDSUFjZ0JpZ0NDRHNCQkNBSElBWW9BZ3c3QVFZZ0J5QUdLQUlRT3dFSUlBY2dCaWdDRkRzQkNpQUhJQVlvQWhnN0FRd2dCeUFHS0FJY093RU9JQWRCRUdvaEJ5QUdRU0JxSVFZZ0FVRUlhaUlCSUFoSERRQUxDeUFHSUF4QkFuUnFJUUVnQ1VFQmFpSUpJQTVIRFFBTERBRUxJQUlOQUNBSVFRSjBJUlVnQ0VGOGNTSURRUUowSVJsQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFJYWtrZ0FTQVZhaUFIUzNFTkFDQURJQWRxSUFFZ0dXb2hCa0VBSVFzRFFDQUhJQXRxSUFFZ0MwRUNkR3I5QUFJQS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9RMEFCQWdNQUFBQUFBQUFBQUFBQUFBQS9Wb0FBQUFnQzBFRWFpSUxJQU5IRFFBTElRY2dBeUlDSUFoR0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFTElBZ2dBaUlCYTBFSGNTSU5CRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDMEVCYWlJTElBMUhEUUFMQ3lBQ0lBaHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQWhIRFFBTEN5QUdJQXhCQW5ScUlRRWdDVUVCYWlJSklBNUhEUUFMQ3lBWFFjd0FhaUVYSUE5Qk5Hb2hEMEVCSVFZZ2RVRUJhaUoxSUFvb0FoZ29BaEJKRFFBTEN5QUdDMFVOQVNCTktBTGNLeUlCUlEwQUlBRVFGQ0JOUWdBM0F0d3JDeUFBSUFBdEFGeEIvZ0Z4T2dCY0lBQWdBQ2dDQ0VIL2ZuRTJBZ2hCQVNGbElBUXBBd2dpZkZBRWZrSUFCU0I4SUFRcEF6aDlDMUFnQUNnQ0NDSUJRY0FBUm5FTkFDQUJRWUFDUmcwQUlBUWdURUVLYWtFQ0lBVVFIVUVDUndSQUlBVkJBVUVDSUFBb0F0QUJHMEdERTBFQUVCTWdBQ2dDMEFGRklXVU1BUXNnVEVFS2FpQk1RUXhxUVFJUUZTQk1LQUlNSWdGQmtQOERSZzBBSUFGQjJmOERSZ1JBSUFCQmdBSTJBZ2dnQUVFQU5nTGtBUXdCQ3lBRUtRTUlJbnhRQkg1Q0FBVWdmQ0FFS1FNNGZRdFFCRUFnQUVIQUFEWUNDQ0FGUVFKQnZzRUFRUUFRRXd3QkMwRUFJV1VnQlVFQlFjM0FBRUVBRUJNTElFeEJFR29rQUNCbEN3c0FJQUFFUUNBQUVCUUxDN1FCQVFGL0lBQW9BZ3hGQkVBZ0FpQUFLQUlrSUFFUkF3QVBDd0pBUVFnUUdDSURSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQkJDQkFZSWdGRkJFQWdBeEFVRHdzZ0FTQUROZ0lBSUFBZ0FDZ0NCRUhrQUd3aUFqWUNLQU5BSUFBb0FoZ2dBa29OQUFzZ0FTQUFLQUlVTmdJRUlBQWdBVFlDRkNBQUlBQW9BaGhCQVdvMkFoZ2dBQ2dDSENJQlJRMEFJQUVvQWdCQkFEWUNDQ0FBSUFFb0FnUTJBaHdnQUNBQUtBSWdRUUZyTmdJZ0lBRVFGQXNMK2dJQkJIOENRQ0FBUlEwQUlBQW9BcXdvSWdFRVFDQUFLQUtvS0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NyQ2dnQVVFRGRHb29BZ0FpQXdSQUlBTVFGQ0FBS0FLb0tDRUNDeUFCUVFGcUlnRWdBa2tOQUFzZ0FDZ0NyQ2doQVFzZ0FFRUFOZ0tvS0NBQkVCUWdBRUVBTmdLc0tBc2dBQ2dDdENnaUFRUkFJQUVRRkNBQVFRQTJBclFvQ3lBQUtBTFFLeUlCQkVBZ0FSQVVJQUJCQURZQzBDc0xJQUFvQXV3cklnRUVRQ0FCRUJRZ0FFRUFOZ0xzS3dzZ0FDZ0M2Q3NpQVFSQUlBRVFGQ0FBUVFBMkF1Z3JDeUFBS0FMOEt5SUJCRUFnQVJBVUlBQkJBRFlDaEN3Z0FFSUFOd0w4S3dzZ0FDZ0M4Q3NpQVFSQUlBQW9BdlFySWdNRWYwRUFJUUlEUUNBQktBSU1JZ1FFUUNBRUVCUWdBVUVBTmdJTUlBQW9BdlFySVFNTElBRkJGR29oQVNBQ1FRRnFJZ0lnQTBrTkFBc2dBQ2dDOENzRklBRUxFQlFnQUVFQU5nTHdLd3NnQUNnQzVDc2lBUVJBSUFFUUZDQUFRUUEyQXVRckN5QUFLQUxjS3lJQlJRMEFJQUVRRkNBQVFnQTNBdHdyQ3d1d0J3SUxmd0YrSUFBb0FoQWlDRUVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlVSWdOQkJFNEVRQ0FBS0FJQUlnSkJBMnNvQWdBaEFTQUFJQU5CQkdzaUF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkF3QkN5QURRZjcvLy84SGNTRUpRUmdoQkFOQUlBQWdBa0VCYXlJR05nSUFJQUl0QUFBZ0FDQUNRUUpySWdJMkFnQWdBQ0FEUVFGck5nSVVJQVl0QUFBaEJpQUFJQU5CQW1zaUF6WUNGQ0FFZENBQmNpQUdJQVJCQ0d0MGNpRUJJQVJCRUdzaEJDQUZRUUpxSWdVZ0NVY05BQXNMQkVBZ0FDQUNRUUZyTmdJQUlBSXRBQUFnQUNBRFFRRnJOZ0lVSUFSMElBRnlJUUVMUVFBaEF3c2dBQ2dDR0NFQ0lBQWdBVUgvQVhFaUNVR1BBVXMyQWhnZ0FFRUhRUWdnQVVHQWdJRDRCM0ZCZ0lDQStBZEdHMEVJSUFJYklnSkJDRUVIUVFnZ0FVR0FnUHdEY1VHQWdQd0RSaHNnQVVILy8vLy9lRTBiYWlJRVFRaEJCMEVJSUFGQmdQNEJjVUdBL2dGR0d5QUJRUkIyUWY4QmNTSUZRWThCVFJ0cUlnWkJDRUVIUVFnZ0FVSC9BSEZCL3dCR0d5QUJRUWgyUWY4QmNTSUhRWThCVFJzZ0NHcHFJZ28yQWhBZ0FDQUFLUU1JSUFVZ0FuUWdBVUVZZG5JZ0J5QUVkSElnQ1NBR2RIS3RJQWl0aG9RaUREY0RDQ0FLUVI5TkJFQUNRQ0FEUVFST0JFQWdBQ2dDQUNJQ1FRTnJLQUlBSVFFZ0FDQURRUVJyTmdJVUlBQWdBa0VFYXpZQ0FBd0JDeUFEUVFCTUJFQkJBQ0VCREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkVFQUlRRU1BUXNnQTBIKy8vLy9CM0VoQmtFWUlRUkJBQ0VCUVFBaEJRTkFJQUFnQWtFQmF5SUhOZ0lBSUFJdEFBQWdBQ0FDUVFKcklnSTJBZ0FnQUNBRFFRRnJOZ0lVSUFjdEFBQWhCeUFBSUFOQkFtc2lBellDRkNBRWRDQUJjaUFISUFSQkNHdDBjaUVCSUFSQkVHc2hCQ0FGUVFKcUlnVWdCa2NOQUFzTFJRMEFJQUFnQWtFQmF6WUNBQ0FDTFFBQUlBQWdBMEVCYXpZQ0ZDQUVkQ0FCY2lFQkN5QUFJQUZCL3dGeElnSkJqd0ZMTmdJWUlBQkJDRUVIUVFnZ0FVR0FnSUQ0QjNGQmdJQ0ErQWRHR3lBSlFZOEJUUnNpQTBFSVFRZEJDQ0FCUVlDQS9BTnhRWUNBL0FOR0d5QUJRZi8vLy85NFRSdHFJZ1JCQ0VFSFFRZ2dBVUdBL2dGeFFZRCtBVVliSUFGQkVIWkIvd0Z4SWdWQmp3Rk5HMm9pQ0VFSVFRZEJDQ0FCUWY4QWNVSC9BRVliSUFGQkNIWkIvd0Z4SWdsQmp3Rk5HeUFLYW1vMkFoQWdBQ0FGSUFOMElBRkJHSFp5SUFrZ0JIUnlJQUlnQ0hSeXJTQUtyWVlnRElRaUREY0RDQXNnREtjTHdSUUNHMzhHZXlBQUtBSUlJZ29nQUNnQ0JHb2hDQUpBSUFBb0FneEZCRUFnQ0VFQ1NBMEJJQU5CQUV3TkFTQUFLQUlBSWdVZ0NFRUVheUlHUVFGMklneEJBblFpQ1NBQklBcEJBblJxSWdjZ0EwRUNkQ0lFYW1wQkJHcEpJQVVnREVFRGRHcEJDR29pQUNBSFFRUnFTM0VnQlNBQklBUnFJQWxxUVFScVNTQUJRUVJxSUFCSmNYSWhFaUFJUVFSSkloUWdBa0VCUjNJaEZTQUNRUUZHSUFaQkJVdHhJUllnQ0VIOC8vLy9CM0VoRXlBSVFRRnhJUmNnQ2tFQmFpRVBJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWlFWklBVWdDRUVCYXlJQVFRSjBhaUVhSUF4QkFXb2lHMEY4Y1NJUVFRRjBJUXNnQWlBS2JFRUNkQ0VjSUFCQkFYWWdBbXhCQW5RaEhRTkFJQUVvQWdBZ0FTQWNhaWdDQUNJSlFRRnFRUUYxYXlFSEFrQWdGQVJBSUFraEJFRUFJUVlNQVF0QkFDRUdBa0FDZjBFQUlCWkZEUUFhUVFBZ0VnMEFHaUFKL1JFaElDQUgvUkVoSC8wTUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUNFalFRQWhBQU5BSUFFZ0FFRUNkR3I5QUFJRUlTSWdBU0FBSUE5cVFRSjBhdjBBQWdBaElTQUZJQUJCQTNScUlnUWdILzFhQWdBRElBUkJDR29nSWlBaElDQWdJZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlpL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlJUDFhQWdBQUlBUkJFR29nSVAxYUFnQUJJQVJCR0dvZ0lQMWFBZ0FDSUFVZ0kvME1BUUFBQUFFQUFBQUJBQUFBQVFBQUFQMVFJaVQ5R3dCQkFuUnFJQ0FnSHlBZy9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYi9hNEJRUUg5ckFFZ0l2MnVBU0lmL1ZvQ0FBQWdCU0FrL1JzQlFRSjBhaUFmL1ZvQ0FBRWdCU0FrL1JzQ1FRSjBhaUFmL1ZvQ0FBSWdCU0FrL1JzRFFRSjBhaUFmL1ZvQ0FBTWdJLzBNQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBUDJ1QVNFaklDQWhIeUFoSVNBZ0FFRUVhaUlBSUJCSERRQUxJQ0Q5R3dNaEJDQWYvUnNESVFjZ0VDQWJSZzBCSUFzaEJpQUVJUWtnRUFzaEFBTkFJQUVnQUVFQmFpSUtJQUpzUVFKMGFpZ0NBQ0VlSUFFZ0FDQVBhaUFDYkVFQ2RHb29BZ0FoQkNBRklBWkJBblJxSWc0Z0J6WUNBQ0FPSUFjZ0hpQUVJQWxxUVFKcVFRSjFheUlIYWtFQmRTQUphallDQkNBR1FRSnFJUVlnQUNBTVJ5QUVJUWtnQ2lFQURRQUxEQUVMSUFzaEJnc2dCU0FHUVFKMGFpQUhOZ0lBUVh3aEFDQVhCSDhnR2lBQklCMXFLQUlBSUFSQkFXcEJBWFZySWdBMkFnQWdBQ0FIYWtFQmRTRUhRWGdGUVh3TElCbHFJQVFnQjJvMkFnQkJBQ0VHUVFBaEFFRUFJUVFDUUNBVklCZ2dEVUVDZEdwQkVFbHlSUVJBQTBBZ0FTQUFRUUowSWdScUlBUWdCV3I5QUFJQS9Rc0NBQ0FBUVFScUlnQWdFMGNOQUFzZ0V5SUVJQWhHRFFFTElBUWhBQ0FSQkVBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FFRUJhaUVBSUFaQkFXb2lCaUFSUncwQUN3c2dCQ0FJYTBGOFN3MEFBMEFnQVNBQUlBSnNRUUowYWlBRklBQkJBblJxS0FJQU5nSUFJQUVnQUVFQmFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUNhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVEYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUJCQkdvaUFDQUlSdzBBQ3dzZ0FVRUVhaUVCSUExQkFXb2lEU0FEUncwQUN3d0JDd0pBQWtBQ1FDQUlRUUZyRGdJQUFRSUxJQU5CQUV3TkFrRUFJUUlDUUNBRFFRUkpCRUFnQVNFQURBRUxJQUVnQTBIOC8vLy9CM0VpQWtFQ2RHb2hBQU5BSUFFZ0JrRUNkR29pQkNBRS9RQUNBQ0lmL1JzQVFRSnQvUkVnSC8wYkFVRUNiZjBjQVNBZi9Sc0NRUUp0L1J3Q0lCLzlHd05CQW0zOUhBUDlDd0lBSUFaQkJHb2lCaUFDUncwQUN5QUNJQU5HRFFNTEEwQWdBQ0FBS0FJQVFRSnROZ0lBSUFCQkJHb2hBQ0FDUVFGcUlnSWdBMGNOQUFzTUFnc2dBMEVBVEEwQklBQW9BZ0FoQ1NBQ0lBcHNRUUowSVFjRFFDQUpJQUVvQWdBZ0FTQUhhaUlFS0FJQVFRRnFRUUYxYXlJQU5nSUVJQWtnQUNBRUtBSUFhaUlBTmdJQUlBRWdBRFlDQUNBQklBSkJBblJxSUFrb0FnUTJBZ0FnQVVFRWFpRUJJQVpCQVdvaUJpQURSdzBBQ3d3QkN5QUlRUU5JRFFBZ0EwRUFUQTBBSUFBb0FnQWlCU0FJSUFoQkFYRWlGRVVpQm10QkJHc2lDVUVCZGlJTFFRSjBJZ2NnQVNBRFFRSjBJZ0JxYWtrZ0JTQUxRUU4wYWtFTWFpSUVJQUZCQkdwTGNTQUZRUVJxSUFBZ0FTQUtRUUowYWlJQWFpQUhha0VJYWtrZ0FFRUlhaUFFU1hGeUlSVWdBa0VCUnlBSVFRUkpjaUVXSUFKQkFVWWdDVUVGUzNFaEZ5QUlRZnovLy84SGNTRVFJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWtFRWF5RVpJQVVnQ0VFQ2F5SUFRUUowYWlFYUlBdEJBV29pRWtGOGNTSU1RUUZ5SVJNZ0RFRUJkRUVCY2lFTElBSWdDbXhCQW5RaEd5QUFJQVpyUVFKSklSd2dDRUVCZGtFQmF5QUNiRUVDZENFZEEwQWdCU0FCS0FJQUlBRWdHMm9pRHlBQ1FRSjBhaWdDQUNJSklBOG9BZ0FpQUdwQkFtcEJBblZySWdjZ0FHbzJBZ0JCQVNFRUFrQWdIQVJBSUFraEJnd0JDd0pBQW45QkFTQVhSUTBBR2tFQklCVU5BQm9nQ2YwUklSOGdCLzBSSVNCQkFDRUFBMEFnQlNBQVFRTjBhaUlISUFFZ0FFRUNkQ0lFYXYwQUFnUWdIeUFFSUE5cS9RQUNDQ0lmL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iSWlJZ0gvMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWlFZ0lTQWdJQ0g5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHY5cmdGQkFmMnNBU0FpL2E0QklpTDlEUVFGQmdjWUdSb2JDQWtLQ3h3ZEhoLzlDd0lVSUFjZ0lDQWkvUTBNRFE0UEVCRVNFd0FCQWdNVUZSWVhJQ0g5RFFBQkFnTUVCUVlIRUJFU0V3d05EZy85Q3dJRUlDRWhJQ0FBUVFScUlnQWdERWNOQUFzZ0gvMGJBeUVHSUNEOUd3TWhCeUFNSUJKR0RRRWdDeUVFSUFZaENTQVRDeUVBQTBBZ0FTQUFJQUpzUVFKMGFpZ0NBQ0VlSUE4Z0FFRUJhaUlLSUFKc1FRSjBhaWdDQUNFR0lBVWdCRUVDZEdvaURpQUhOZ0lBSUE0Z0J5QWVJQVlnQ1dwQkFtcEJBblZySWdkcVFRRjFJQWxxTmdJRUlBUkJBbW9oQkNBQUlCSkhJQW9oQUNBR0lRa05BQXNNQVFzZ0N5RUVDeUFZSUExQkFuUnFJUWtnQlNBRVFRSjBhaUFITmdJQUFrQWdGRVVFUUNBYUlBRWdIV29vQWdBZ0JrRUJha0VCZFdzaUFDQUhha0VCZFNBR2FqWUNBQXdCQ3lBR0lBZHFJUUFMSUJrZ0FEWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCWWdDVUVRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBUVJ3MEFDeUFRSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMQ3dzekFRRi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRU0FnQUJCNUlRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lBQlFSQnFKQUFMR3dFQmZ5QUFCRUFnQUNnQ0NDSUJCRUFnQVJBVUN5QUFFQlFMQ3pFQkFuOUJBVUVNRUJjaUFBUkFJQUJCQ2pZQ0JDQUFRUXBCQkJBWElnRTJBZ2dnQVFSQUlBQVBDeUFBRUJRTFFRQUxTQUVDZndKL0lBRkJIMDBFUUNBQUtBSUFJUUlnQUVFRWFnd0JDeUFCUVNCcklRRWdBQXNvQWdBaEF5QUFJQUlnQVhRMkFnQWdBQ0FESUFGMElBSkJJQ0FCYTNaeU5nSUVDNjhDQVFaL0l3QkI4QUZySWdZa0FDQUdJQUkyQXV3QklBWWdBVFlDNkFFZ0JpQUFOZ0lBSUFSRklRa0NRQUpBQWtBQ1FDQUJRUUZIQkVBZ0FDRUhRUUVoQ0F3QkN5QUFJUWRCQVNFSUlBSU5BQ0FBSVFRTUFRc0RRQ0FISUFVZ0EwRUNkR29pQ2lnQ0FHc2lCQ0FBRUN0QkFFd0VRQ0FISVFRTUFnc2dDVUYvY3lFTFFRRWhDUUpBSUFzZ0EwRUNTSEpCQVhGRkJFQWdDa0VJYXlnQ0FDRUtJQWRCQ0dzaUN5QUVFQ3RCQUU0TkFTQUxJQXBySUFRUUswRUFUZzBCQ3lBR0lBaEJBblJxSUFRMkFnQWdCa0hvQVdvZ0FTQUNFSGNpQVJBOElBaEJBV29oQ0NBQklBTnFJUU1nQmlnQzdBRWhBaUFFSVFjZ0JpZ0M2QUVpQVVFQlJ3MEJJQUlOQVF3REN3c2dCeUVFREFFTElBbEZEUUVMSUFZZ0NCQjJJQVFnQXlBRkVFUUxJQVpCOEFGcUpBQUxTd0VDZnlBQUtBSUVJUUlnQUFKL0lBRkJIMDBFUUNBQUtBSUFJUU1nQWd3QkN5QUJRU0JySVFFZ0FpRURRUUFMSWdJZ0FYWTJBZ1FnQUNBQ1FTQWdBV3QwSUFNZ0FYWnlOZ0lBQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFVSUFCQkFEWUNJQ0FBRUJRTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFVQ3d1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRYUhwQUNBREVCTkJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkI1dWtBSUFOQkVHb1FFMEVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUdiTkVFQUVCTUxJQU5CSUdva0FDQUNDLzBHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRURRZ0FDZ0NEQkFVSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBVUlBQkNBRGNERUFzZ0FDZ0NRQkFVSUFCQ0FEY0NQQ0FBS0FKSUVCUWdBRUVBTmdKSUlBQW9BbGdRRkNBQVFRQTJBbGdNQVFzZ0FDZ0NMQ0lCQkVBZ0FSQVVJQUJCQURZQ0xBc2dBQ2dDSUNJQkJFQWdBUkFVSUFCQ0FEY0RJQXNnQUNnQ05DSUJSUTBBSUFFUUZDQUFRZ0EzQWpRTElBQW9BdWdCRUY0Z0FDZ0N0QUVpQVFSQUlBQW9Bb0FCSUFBb0FvUUJiQ0lEQkg4RFFDQUJFRFFnQVVHTUxHb2hBU0FDUVFGcUlnSWdBMGNOQUFzZ0FDZ0N0QUVGSUFFTEVCUWdBRUVBTmdLMEFRc2dBQ2dDakFFaUFRUkFJQUFvQW9nQklnSUVRRUVBSVFFRFFDQUFLQUtNQVNBQlFRTjBhaWdDQUNJREJFQWdBeEFVSUFBb0FvZ0JJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUtNQVNFQkN5QUFRUUEyQW9nQklBRVFGQ0FBUVFBMkFvd0JDeUFBS0FLZ0FSQVVJQUJCQURZQ2tBRWdBRUVBTmdLZ0FTQUFLQUo4RUJRZ0FFRUFOZ0o4SUFBdEFOUUJRUUp4UlFSQUlBQW9Bc0FCRUJRTElBQkI2QUJxUVFCQjhBQVFHUm9nQUNnQzJBRVFPQ0FBUVFBMkF0Z0JJQUFvQXR3QkVEZ2dBRUVBTmdMWUFTQUFLQUxnQVNJQkJFQWdBU2dDSENJQ0JFQWdBaEFVSUFGQkFEWUNIQXNnQVNnQ0tDSUNCRUFnQVNnQ0pBUkFBMEFnQWlBRlFTaHNJZ05xS0FJa0lnUUVRQ0FFRUJRZ0FTZ0NLQ0lDSUFOcVFRQTJBaVFMSUFJZ0Eyb29BaEFpQkFSQUlBUVFGQ0FCS0FJb0lnSWdBMnBCQURZQ0VBc2dBaUFEYWlnQ0dDSUVCRUFnQkJBVUlBRW9BaWdpQWlBRGFrRUFOZ0lZQ3lBRlFRRnFJZ1VnQVNnQ0pFa05BQXNMSUFJUUZDQUJRUUEyQWlnTElBRVFGQXNnQUVFQU5nTGdBU0FBS0FKZ0VDVWdBRUVBTmdKZ0lBQW9BbVFRSlNBQVFRQTJBbVFnQUNnQzdBRWlBd1JBQWtBZ0F5Z0NDRVVOQUNBREtBSU1CRUFnQTBFQU5nSW9BMEFnQXlnQ0dFRUFTZzBBQ3dzZ0EwRUJOZ0lRSUFNb0FnQVFGQ0FES0FJY0lnSkZEUUFEUUNBQ0tBSUVJUUVnQWhBVUlBTWdBVFlDSENBQklnSU5BQXNMSUFNb0FpUWlBZ1JBSUFJb0FnUWlCVUVBU2dSQVFRQWhBUU5BSUFJb0FnQWdBVUVNYkdvaUJDZ0NDQ0lHQkVBZ0JDZ0NCQ0FHRVFJQUlBSW9BZ1FoQlFzZ0FVRUJhaUlCSUFWSURRQUxDeUFDS0FJQUVCUWdBaEFVQ3lBREVCUUxJQUJCQURZQzdBRWdBQkFVQ3d2bUF3SUlmd1IrSUFBb0FoUW9BZ0FvQWhRZ0FVSE1BR3hxSWdrb0Fnd2lDQ0FBS0FJWUtBSVlJQUZCTkd4cUlnbzFBZ1FpRUVJQmZTSVNJQUExQWp4OElCQ0FweUlMSUFnZ0Mwa2JJUXdnQ1NnQ0NDSUlJQW8xQWdBaUVVSUJmU0lUSUFBMUFqaDhJQkdBcHlJS0lBZ2dDa2tiSVFvZ0NTZ0NCQ0lJSUJJZ0FEVUNOSHdnRUlDbklnc2dDQ0FMU3hzaEN5QUpLQUlBSWdnZ0V5QUFOUUl3ZkNBUmdLY2lEU0FJSUExTEd5RU5RUUFoQ0NBQUtBSWdLQUxRS3lBQlFiZ0liR29vQWhRaERnSkFJQWtvQWhSQkFDQUNhMEYvSUFJYmFpSUNSUVJBSUFvaEFDQU5JUWdnQ3lFQkRBRUxJQU5CQVhFZ0FrRUJheUlQZENJSklBMUpCRUFnRFNBSmE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRZ0xRUUFoQUVFQUlRRWdBMEVCZGlBUGRDSURJQXRKQkVBZ0N5QURhNjFDZnlBQ3JTSVFoa0ovaFh3Z0VJaW5JUUVMSUFrZ0Nra0VRQ0FLSUFscnJVSi9JQUt0SWhDR1FuK0ZmQ0FRaUtjaEFBc2dBeUFNVHdSQVFRQWhEQXdCQ3lBTUlBTnJyVUovSUFLdEloQ0dRbitGZkNBUWlLY2hEQXNnQkVGL0lBQkJBa0VESUE1QkFVWWJJZ0pxSWdNZ0FDQURTeHRKSUFWQmZ5QUNJQXhxSWdBZ0FDQU1TUnRKY1NBR0lBZ2dBbXNpQUVFQUlBQWdDRTBiUzNFZ0J5QUJJQUpySWdCQkFDQUFJQUZORzB0eEM2SUJBUVovSUFBRVFDQUFLQUlFSWdJRVFDQUNFQlFnQUVFQU5nSUVDeUFCQkVBZ0FDRUNBMEFnQWlnQ3lBRWlBd1JBUVFBaEJTQUNLQUxFQVNJRUJIOERRQ0FES0FJTUlnWUVRQ0FHRUJRZ0EwRUFOZ0lNSUFJb0FzUUJJUVFMSUFOQkVHb2hBeUFGUVFGcUlnVWdCRWtOQUFzZ0FpZ0N5QUVGSUFNTEVCUWdBa0VBTmdMSUFRc2dBa0h3QVdvaEFpQUhRUUZxSWdjZ0FVY05BQXNMSUFBUUZBc0x3QmdDRzM4RGV5QUNRUWRzSVE4Z0FrRUdiQ0VRSUFKQkJXd2hFU0FDUVFKMElRd2dBa0VEYkNFU0lBSkJBWFFoRXlBQUtBSUFJZ29nQUNnQ0RDSVpRUVYwSWdScUlRWWdDaUFFYXlBQUtBSVFJUVVnQUNnQ0hDRUxJQUFvQWhRaEJ5QUFLQUlJSVEwQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFoSkRRQWdBVUVQY1EwQUlBWkJEM0ZGRFFFTElBVWdCMDhOQlFKQUFrQWdBMEVCYXc0Q0FBRURDeUFISUFWcklnaEJGMDBOQlNBQklBVkJBblJxSVFrZ0dVRUZkQ0lFSUFvZ0JVRUdkR3BxSUFFZ0IwRUNkR3BKQkVBZ0NTQUtJQWRCQm5ScUlBUnFRVHhyU1EwR0N5QUYvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaElDQUZJQWhCZkhFaURtb2hCVUVBSVFRRFFDQUdJQ0JCQnYyckFTSWYvUnNBYWlBSklBUkJBblJxL1FBQ0FDSWgvUjhBT0FJQUlBWWdILzBiQVdvZ0lmMGZBVGdDQUNBR0lCLzlHd0pxSUNIOUh3STRBZ0FnQmlBZi9Sc0RhaUFoL1I4RE9BSUFJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUVRUVJxSWdRZ0RrY05BQXNnQ0NBT1J3MEZEQVlMSUFFZ0FrRUNkR29oQ0NBSElBVnJJZzVCRzAwTkFpQVpRUVYwSWdRZ0NpQUZRUVowYW1vaUNTQUJJQUlnQjJwQkFuUnFTU0FLSUFkQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4RFFJZ0NTQUJJQWRCQW5ScVNTQUJJQVZCQW5ScUlBUkpjUTBDSUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VnSUFVZ0RrRjhjU0lVYWlFRVFRQWhDUU5BSUFZZ0lFRUcvYXNCSWgvOUd3QnFJaFVnQVNBRklBbHFRUUowSWhacS9RQUNBQ0loL1I4QU9BSUFJQVlnSC8wYkFXb2lGeUFoL1I4Qk9BSUFJQVlnSC8wYkFtb2lHQ0FoL1I4Q09BSUFJQVlnSC8wYkEyb2lHaUFoL1I4RE9BSUFJQlVnQ0NBV2F2MEFBZ0FpSC8wZkFEZ0NCQ0FYSUIvOUh3RTRBZ1FnR0NBZi9SOENPQUlFSUJvZ0gvMGZBemdDQkNBZy9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJU0FnQ1VFRWFpSUpJQlJIRFFBTElBNGdGRWNOQXd3RkN5QUZJQWRQRFFRZ0FTQVBRUUowYWlFSklBRWdFRUVDZEdvaERpQUJJQkZCQW5ScUlSUWdBU0FNUVFKMGFpRVZJQUVnRWtFQ2RHb2hGaUFCSUJOQkFuUnFJUmNnQVNBQ1FRSjBhaUVZQTBBZ0JpQUZRUVowYWlJRUlBRWdCVUVDZENJSWFpb0NBRGdDQUNBRUlBZ2dHR29xQWdBNEFnUWdCQ0FJSUJkcUtnSUFPQUlJSUFRZ0NDQVdhaW9DQURnQ0RDQUVJQWdnRldvcUFnQTRBaEFnQkNBSUlCUnFLZ0lBT0FJVUlBUWdDQ0FPYWlvQ0FEZ0NHQ0FFSUFnZ0NXb3FBZ0E0QWh3Z0JVRUJhaUlGSUFkSERRQUxEQVFMSUFFZ0QwRUNkR29oQ1NBQklCQkJBblJxSVE0Z0FTQVJRUUowYWlFVUlBRWdERUVDZEdvaEZTQUJJQkpCQW5ScUlSWWdBU0FUUVFKMGFpRVhJQUVnQWtFQ2RHb2hHQ0FEUVFOR0lSb2dBMEVFUmlFY0lBTkJCVVloSFNBRFFRZEdJUjREUUNBR0lBVkJCblJxSWdRZ0FTQUZRUUowSWdocUtnSUFPQUlBSUFRZ0NDQVlhaW9DQURnQ0JDQUVJQWdnRjJvcUFnQTRBZ2dDUUNBYURRQWdCQ0FJSUJacUtnSUFPQUlNSUJ3TkFDQUVJQWdnRldvcUFnQTRBaEFnSFEwQUlBUWdDQ0FVYWlvQ0FEZ0NGQ0FEUVFaR0RRQWdCQ0FJSUE1cUtnSUFPQUlZSUI0TkFDQUVJQWdnQ1dvcUFnQTRBaHdMSUFWQkFXb2lCU0FIUncwQUN3d0RDeUFGSVFRTElBUkJBV29oQlNBSElBUnJRUUZ4QkVBZ0JpQUVRUVowYWlJSklBRWdCRUVDZENJRWFpb0NBRGdDQUNBSklBUWdDR29xQWdBNEFnUWdCU0VFQ3lBRklBZEdEUUVEUUNBR0lBUkJCblJxSWdVZ0FTQUVRUUowSWdscUtnSUFPQUlBSUFVZ0NDQUphaW9DQURnQ0JDQUdJQVJCQVdvaUJVRUdkR29pQ1NBQklBVkJBblFpQldvcUFnQTRBZ0FnQ1NBRklBaHFLZ0lBT0FJRUlBUkJBbW9pQkNBSFJ3MEFDd3dCQ3lBSElBVWlCR3RCQTNFaUNRUkFRUUFoQ0FOQUlBWWdCRUVHZEdvZ0FTQUVRUUowYWlvQ0FEZ0NBQ0FFUVFGcUlRUWdDRUVCYWlJSUlBbEhEUUFMQ3lBRklBZHJRWHhMRFFBRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQmlBRVFRRnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRSnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRTnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQkVFRWFpSUVJQWRIRFFBTEMwRWdhaUVISUFFZ0RVRUNkR29oQmlBQUtBSVlJUVVDUUFKQUFrQUNRQ0FEUVFoSkRRQWdCa0VQY1EwQUlBZEJEM0ZGRFFFTElBVWdDMDhOQWdKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFzZ0JXc2lBRUViVFEwRElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdKcmFpQUJJQXNnRFdwQkFuUnFTUVJBSUFFZ0JTQU5ha0VDZEdvZ0MwRUdkQ0FDYXlBS2FrRWNhMGtOQkFzZ0JpQUZRUUowYWlFQ0lBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFZ0lBVWdBRUY4Y1NJQmFpRUZRUUFoQkFOQUlBY2dJRUVHL2FzQkloLzlHd0JxSUFJZ0JFRUNkR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlBaC9SOEJPQUlBSUFjZ0gvMGJBbW9nSWYwZkFqZ0NBQ0FISUIvOUd3TnFJQ0g5SHdNNEFnQWdJUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFZ0lBUkJCR29pQkNBQlJ3MEFDeUFBSUFGSERRTU1CQXNnQmlBQ1FRSjBhaUVEQWtBZ0N5QUZheUlBUVNSSkJFQWdCU0VFREFFTElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdScmFpSUlJQUVnQWlBTElBMXFJZ0pxUVFKMGFra2dDMEVHZENBRWF5QUtha0VZYXlJRUlBRWdEVUVDZEdvZ0JVRUNkR29pQ2lBTWFrdHhCRUFnQlNFRURBRUxJQWdnQVNBQ1FRSjBha2tnQkNBS1MzRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklTQWdCU0FBUVh4eElnSnFJUVJCQUNFQkEwQWdCeUFnUVFiOXF3RWlILzBiQUdvaUNpQUdJQUVnQldwQkFuUWlDR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlJTUlDSDlId0U0QWdBZ0J5QWYvUnNDYWlJTklDSDlId0k0QWdBZ0J5QWYvUnNEYWlJUElDSDlId000QWdBZ0NpQURJQWhxL1FBQ0FDSWYvUjhBT0FJRUlBd2dILzBmQVRnQ0JDQU5JQi85SHdJNEFnUWdEeUFmL1I4RE9BSUVJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUJRUVJxSWdFZ0FrY05BQXNnQUNBQ1JnMEVDeUFFUVFGcUlRQWdDeUFFYTBFQmNRUkFJQWNnQkVFR2RHb2lBU0FHSUFSQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEJBc2dBQ0FMUmcwREEwQWdCeUFFUVFaMGFpSUFJQVlnQkVFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQnlBRVFRRnFJZ0JCQm5ScUlnRWdCaUFBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FFUVFKcUlnUWdDMGNOQUFzTUF3c2dCaUFQUVFKMGFpRUVJQVlnRUVFQ2RHb2hDaUFHSUJGQkFuUnFJUWdnQmlBTVFRSjBhaUVNSUFZZ0VrRUNkR29oRFNBR0lCTkJBblJxSVE4Z0JpQUNRUUowYWlFQ0lBTkJBMFloRUNBRFFRUkdJUkVnQTBFRlJpRVNJQU5CQjBZaEV3TkFJQWNnQlVFR2RHb2lBQ0FHSUFWQkFuUWlBV29xQWdBNEFnQWdBQ0FCSUFKcUtnSUFPQUlFSUFBZ0FTQVBhaW9DQURnQ0NBSkFJQkFOQUNBQUlBRWdEV29xQWdBNEFnd2dFUTBBSUFBZ0FTQU1haW9DQURnQ0VDQVNEUUFnQUNBQklBaHFLZ0lBT0FJVUlBTkJCa1lOQUNBQUlBRWdDbW9xQWdBNEFoZ2dFdzBBSUFBZ0FTQUVhaW9DQURnQ0hBc2dCVUVCYWlJRklBdEhEUUFMREFJTElBVWdDMDhOQVNBR0lBOUJBblJxSVFNZ0JpQVFRUUowYWlFRUlBWWdFVUVDZEdvaENpQUdJQXhCQW5ScUlRZ2dCaUFTUVFKMGFpRU1JQVlnRTBFQ2RHb2hEU0FHSUFKQkFuUnFJUUlEUUNBSElBVkJCblJxSWdBZ0JpQUZRUUowSWdGcUtnSUFPQUlBSUFBZ0FTQUNhaW9DQURnQ0JDQUFJQUVnRFdvcUFnQTRBZ2dnQUNBQklBeHFLZ0lBT0FJTUlBQWdBU0FJYWlvQ0FEZ0NFQ0FBSUFFZ0Ntb3FBZ0E0QWhRZ0FDQUJJQVJxS2dJQU9BSVlJQUFnQVNBRGFpb0NBRGdDSENBRlFRRnFJZ1VnQzBjTkFBc01BUXNnQ3lBRklnUnJRUU54SWdBRVFFRUFJUWdEUUNBSElBUkJCblJxSUFZZ0JFRUNkR29xQWdBNEFnQWdCRUVCYWlFRUlBaEJBV29pQ0NBQVJ3MEFDd3NnQlNBTGEwRjhTdzBBQTBBZ0J5QUVRUVowYWlBR0lBUkJBblJxS2dJQU9BSUFJQWNnQkVFQmFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFQ2FpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFRGFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQVJCQkdvaUJDQUxSdzBBQ3dzTG5BRUJCWDhqQUVId0FXc2lCQ1FBSUFRZ0FEWUNBRUVCSVFVQ1FDQUJRUUpJRFFBZ0FDRURBMEFnQUNBRFFRaHJJZ01nQWlBQlFRSnJJZ2RCQW5ScUtBSUFheUlHRUN0QkFFNEVRQ0FBSUFNUUswRUFUZzBDQ3lBRUlBVkJBblJxSUFZZ0F5QUdJQU1RSzBFQVRpSUdHeUlETmdJQUlBVkJBV29oQlNBQlFRRnJJQWNnQmhzaUFVRUJTZzBBQ3dzZ0JDQUZFSFlnQkVId0FXb2tBQXVkQXdFRWZ5QUJJQUJCQkdvaUJHcEJBV3RCQUNBQmEzRWlCU0FDYWlBQUlBQW9BZ0FpQVdwQkJHdE5CSDhnQUNnQ0JDSURJQUFvQWdnaUJqWUNDQ0FHSUFNMkFnUWdCQ0FGUndSQUlBQWdBRUVFYXlnQ0FFRitjV3NpQXlBRklBUnJJZ1FnQXlnQ0FHb2lCVFlDQUNBRElBVkJmSEZxUVFScklBVTJBZ0FnQUNBRWFpSUFJQUVnQkdzaUFUWUNBQXNDZnlBQklBSkJHR3BQQkVBZ0FDQUNhaUlFSUFFZ0FtdEJDR3NpQVRZQ0NDQUVRUWhxSWdVZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBRUFuOGdCQ2dDQ0VFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBV2NoQXlBQlFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUJRZjhmVFEwQUdrRS9JQUZCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdFZ0FVRS9UeHNMSWdOQkJIUWlBVUhnelFGcU5nSU1JQVFnQVVIb3pRRnFJZ0VvQWdBMkFoQWdBU0FGTmdJQUlBUW9BaEFnQlRZQ0JFSG8xUUZCNk5VQktRTUFRZ0VnQTYyR2hEY0RBQ0FBSUFKQkNHb2lBVFlDQUNBQUlBRkJmSEZxREFFTElBQWdBV29MUVFScklBRTJBZ0FnQUVFRWFnVkJBQXNMd2dFQkEzOENRQ0FDS0FJUUlnTUVmeUFEQlNBQ0VFY05BU0FDS0FJUUN5QUNLQUlVSWdScklBRkpCRUFnQWlBQUlBRWdBaWdDSkJFQUFBOExBa0FDUUNBQ0tBSlFRUUJJRFFBZ0FVVU5BQ0FCSVFNRFFDQUFJQU5xSWdWQkFXc3RBQUJCQ2tjRVFDQURRUUZySWdNTkFRd0NDd3NnQWlBQUlBTWdBaWdDSkJFQUFDSUVJQU5KRFFJZ0FTQURheUVCSUFJb0FoUWhCQXdCQ3lBQUlRVkJBQ0VEQ3lBRUlBVWdBUkFXR2lBQ0lBSW9BaFFnQVdvMkFoUWdBU0FEYWlFRUN5QUVDMWtCQVg4Z0FDQUFLQUpJSWdGQkFXc2dBWEkyQWtnZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDOHdDQVFSL0lBRWdBUDBBQWdEOUN3SUFJQUVvQWhnaUFnUkFJQUVvQWhBaUF3Ui9RUUFoQWdOQUlBRW9BaGdnQWtFMGJHb29BaXdpQkFSQUlBUVFGQ0FCS0FJUUlRTUxJQUpCQVdvaUFpQURTUTBBQ3lBQktBSVlCU0FDQ3hBVUlBRkJBRFlDR0FzZ0FTQUFLQUlRSWdJMkFoQWdBU0FDUVRSc0VCZ2lBallDR0NBQ0JFQWdBU2dDRUFSQVFRQWhBd05BSUFJZ0EwRTBiQ0lGYWlJQ0lBQW9BaGdnQldvaUJQMEFBZ0Q5Q3dJQUlBSWdCQ2dDTURZQ01DQUNJQVQ5QUFJZy9Rc0NJQ0FDSUFUOUFBSVEvUXNDRUNBQktBSVlJZ0lnQldwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUVrTkFBc0xJQUVnQUNnQ0ZEWUNGQ0FCSUFBb0FpQWlBallDSUNBQ0JFQWdBU0FDRUJnaUFqWUNIQ0FDUlFSQUlBRkNBRGNDSEE4TElBSWdBQ2dDSENBQUtBSWdFQllhRHdzZ0FVRUFOZ0ljRHdzZ0FVRUFOZ0lRSUFGQkFEWUNHQXNFQUVFQkM4WUJBUU4vQTBBZ0FFRUVkQ0lCUWVUTkFXb2dBVUhnelFGcUlnSTJBZ0FnQVVIb3pRRnFJQUkyQWdBZ0FFRUJhaUlBUWNBQVJ3MEFDMEV3RUhvYUl3QkJFR3NpQUNRQUFrQWdBRUVNYWlBQVFRaHFFQkFOQUVIdzFRRkJDQ0FBS0FJTVFRSjBRUVJxRUNraUFUWUNBQ0FCUlEwQVFRZ2dBQ2dDQ0JBcElnRUVRRUh3MVFFb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFQUlEwQkMwSHcxUUZCQURZQ0FBc2dBRUVRYWlRQVFZeldBVUVxTmdJQVFkVFdBVUdZMXdFMkFnQUxrZ1lDQkg4RGV5TUFRUkJySWdZa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLMEFTQUFLQUxrQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUUFDUUNBREtBSUFJZ1ZGQkVCQkFDRUNJQVJCQVVHdEZFRUFFQk1NQVFzZ0FDZ0MwQ3NnQXlBRlFRRnJOZ0lBSUFJZ0JrRU1ha0VCRUJVZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRWlA5QUNBR0VCTWdCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRRlNBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMSUFVZ0F5Z0NBQ0lBU3dSQVFRQWhBZ3dFQ3lBQUlBVnJEQUlMSUFkQkhHb2hCRUVBSVFJRFFDQUFJQVpCREdwQkFoQVZJQUpCNEFCTkJFQWdCQ0FDUVFOMGFpSUZJQVlvQWd3aUNFSC9EM0UyQWdRZ0JTQUlRUXQyTmdJQUN5QUFRUUpxSVFBZ0FrRUJhaUlDSUFGSERRQUxJQUZCQVhRTElRQWdBQ0FES0FJQUlnRkxCRUJCQUNFQ0RBSUxJQUVnQUdzTE5nSUFRUUVoQWlBSEtBSVlRUUZIRFFBZ0IwRWNhaUVFSUFmOUNRSWNJUXNnQnlnQ0lDRUQvUXdCQUFBQUFnQUFBQU1BQUFBRUFBQUFJUXBCQUNFQkEwQWdCQ0FCUVFOMGFpSUFRUmhxSUFzZ0N2ME0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMnVBU0lKL1JzQVFRTnUvUkVnQ2YwYkFVRURidjBjQVNBSi9Sc0NRUU51L1J3Q0lBbjlHd05CQTI3OUhBUDlzUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5dUFFaUNmMWFBZ0FDSUFCQkVHb2dDZjFhQWdBQklBQkJDR29nQ2YxYUFnQUFJQVFnQVVFRWFpSUJRUU4wYWlJRklBbjlXZ0lBQXlBQUlBTTJBaHdnQUNBRE5nSVVJQUFnQXpZQ0RDQUZJQU0yQWdRZ0N2ME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0VLSUFGQjRBQkhEUUFMQ3lBR1FSQnFKQUFnQWd1RUJ3RUdmeU1BUVNCcklnWWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBSzBBU0FBS0FMa0FVR01MR3hxREFFTElBQW9BZ3dMSVFVQ1FDQURLQUlBUVFSTkJFQkJBQ0VBSUFSQkFVR0tGRUVBRUJNTUFRc2dBaUFGS0FMUUt5QUJRYmdJYkdvaUJTSUpRUVJxUVFFUUZTQUZJQVVvQWdSQkFXb2lCellDQkNBSFFTSlBCRUFnQmtFaE5nSUVJQVlnQnpZQ0FDQUVRUUZCcmpzZ0JoQVRRUUFoQUF3QkN5QUhJQUFvQXJnQklnaE5CRUFnQmlBSE5nSVlJQVlnQ0RZQ0ZDQUdJQUUyQWhBZ0JFRUJRWUtBQVNBR1FSQnFFQk1nQUNBQUtBSUlRWUNBQW5JMkFnaEJBQ0VBREFFTElBSkJBV29nQlVFSWFrRUJFQlVnQlNBRktBSUlRUUpxTmdJSUlBSkJBbW9nQlVFTWFrRUJFQlVnQlNBRktBSU1RUUpxSWdBMkFnd0NRQUpBSUFVb0FnZ2lBVUVLU3cwQUlBQkJDa3NOQUNBQUlBRnFRUTFKRFFFTFFRQWhBQ0FFUVFGQnR5cEJBQkFUREFFTElBSkJBMm9nQlVFUWFrRUJFQlVnQlMwQUVFR0FBWEVFUUVFQUlRQWdCRUVCUWY4eVFRQVFFd3dCQ3lBQ1FRUnFJQVZCRkdwQkFSQVZJQVVvQWhSQkFrOEVRRUVBSVFBZ0JFRUJRYjR5UVFBUUV3d0JDeUFESUFNb0FnQkJCV3NpQnpZQ0FFRUJJUUFnQlNnQ0JDRUJBa0FnQlMwQUFFRUJjVVVFUUNBQlJRMENJQVZCc0FkcUlRSWdCVUdzQm1vaEJFRUFJUVVnQVVFRFRRMEJJQUZCZkhFaEJVRUFJUU1EUUNBRUlBTkJBblFpQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQUlnQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQU5CQkdvaUF5QUZSdzBBQ3lBQklBVkhEUUVNQWdzZ0FTQUhUUVJBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBa0VGYWlBR1FSeHFRUUVRRlNBRklBWW9BaHdpQUVFRWRqWUNzQWNnQlNBQVFROXhOZ0tzQmlBRktBSUVJZ0ZCQWs4RVFDQUZRYkFIYWlFSElBVkJyQVpxSVFnZ0FrRUdhaUVBUVFFaEJRTkFJQUFnQmtFY2FrRUJFQlVDUUNBR0tBSWNJZ0ZCRUU4RVFDQUJRUTl4SWdJTkFRdEJBQ0VBSUFSQkFVSGtMa0VBRUJNTUJnc2dDQ0FGUVFKMElncHFJQUkyQWdBZ0J5QUthaUFCUVFSMk5nSUFJQUJCQVdvaEFDQUZRUUZxSWdVZ0NTZ0NCQ0lCU1EwQUN3c2dBeWdDQUNFSEN5QURJQWNnQVdzMkFnQkJBU0VBREFJTFFRQWhBQ0FFUVFGQmloUkJBQkFUREFFTEEwQWdCQ0FGUVFKMElnQnFRUTgyQWdBZ0FDQUNha0VQTmdJQVFRRWhBQ0FGUVFGcUlnVWdBVWtOQUFzTElBWkJJR29rQUNBQUMxSUFJQUVnQUMwQUFEb0FCeUFCSUFBdEFBRTZBQVlnQVNBQUxRQUNPZ0FGSUFFZ0FDMEFBem9BQkNBQklBQXRBQVE2QUFNZ0FTQUFMUUFGT2dBQ0lBRWdBQzBBQmpvQUFTQUJJQUF0QUFjNkFBQUxrZ0VCQkg4Z0FDQUJOZ0s0QVFKQUlBQW9BbUFpQTBVTkFDQURLQUlZSWdaRkRRQWdBQ2dDRENJRVJRMEFJQVFvQXRBclJRMEFJQU1vQWhBaUJFVUVRRUVCRHd0QkFDRURBMEFnQUNnQ0RDZ0MwQ3NnQTBHNENHeHFLQUlFSUFGTkJFQWdBa0VCUWJUSEFFRUFFQk5CQUE4TElBWWdBMEUwYkdvZ0FUWUNLRUVCSVFVZ0EwRUJhaUlESUFSSERRQUxDeUFGQzZVSEFnbC9DSDRqQUVFUWF5SUxKQUFDUUNBQ1JRUkFJQU5CQVVISTJnQkJBQkFUREFFTElBSW9BaEFpQ1NBQUtBSmdJZ2NvQWhCSkJFQWdBMEVCUWFYU0FFRUFFQk1NQVFzZ0FDZ0NnQUVpQlNBQUtBS0VBV3dpQmlBRVRRUkFJQXNnQkRZQ0FDQUxJQVpCQVdzMkFnUWdBMEVCUWNYL0FDQUxFQk5CQUNFRkRBRUxJQUlnQUNnQ2JDQUVJQVVnQkNBRmJpSUdiR3NpQ0NBQUtBSjBiR29pQlRZQ0FDQUNJQVVnQnlnQ0FDSUhJQVVnQjBzYklnYzJBZ0FnQWlBQUtBSnNJQUFvQW5RZ0NFRUJhbXhxSWdVMkFnZ2dBaUFGSUFBb0FtQW9BZ2dpQ0NBRklBaEpHeUlJTmdJSUlBSWdBQ2dDY0NBQUtBSjRJQVpzYWlJRk5nSUVJQUlnQlNBQUtBSmdLQUlFSWdvZ0JTQUtTeHNpQ2pZQ0JDQUNJQUFvQW5BZ0FDZ0NlQ0FHUVFGcWJHb2lCVFlDRENBQ0lBVWdBQ2dDWUNnQ0RDSUdJQVVnQmtrYklnVTJBZ3dnQUNnQ1lDSU1LQUlRSWdZRVFDQUZyRUlCZlNFUklBaXNRZ0Y5SVJJZ0NxMUNBWDBoRXlBSHJVSUJmU0VVSUF3b0FoZ2hDQ0FDS0FJWUlRVkJBQ0VIQTBBZ0JTQUlJQWRCTkd4cUtBSW9JZ28yQWlnZ0JTQVVJQVVvQWdBaURLMGlEbndnRG9BaUZUNENFQ0FGSUJNZ0JTZ0NCQ0lOclNJT2ZDQU9nQ0lRUGdJVUlBVkNmeUFLclNJT2hpSVBJQkRFZlNBT2g2Y2dEeUFSSUEyc0loQjhJQkIveEgwZ0RvZW5hellDRENBRklBOGdGY1I5SUE2SHB5QVBJQklnREt3aUQzd2dEMy9FZlNBT2g2ZHJOZ0lJSUFWQk5Hb2hCU0FIUVFGcUlnY2dCa2NOQUFzTElBWWdDVWtFUUNBQ0tBSVlJUVVEUUNBRklBWkJOR3dpQjJvb0Fpd1FGQ0FDS0FJWUlnVWdCMnBCQURZQ0xDQUdRUUZxSWdZZ0FpZ0NFRWtOQUFzZ0FpQUFLQUpnS0FJUU5nSVFDeUFBS0FKa0lnVUVRQ0FGRUNVTElBQkJBVUVrRUJjaUJqWUNaRUVBSVFVZ0JrVU5BQ0FDSUFZUVNDQUFJQVEyQWl3Z0FDZ0MyQUZCR0NBREVDaEZEUUFnQUNnQzJBRWlDU2dDQUNFRUlBa29BZ2doQmdKQUlBUUVRRUVCSVFVZ0JFRUJjU0VJSUFSQkFVWUVmMEVBQlNBRVFYNXhJUVJCQUNFSEEwQUNmMEVBSUFWRkRRQWFRUUFnQUNBQklBTWdCaWdDQUJFQUFFVU5BQm9nQUNBQklBTWdCaWdDQkJFQUFFRUFSd3NoQlNBR1FRaHFJUVlnQjBFQ2FpSUhJQVJIRFFBTElBVkZDeUVFUVFBZ0JTQUlHeUVGQWtBZ0NFVU5BQ0FFRFFBZ0FDQUJJQU1nQmlnQ0FCRUFBRUVBUnlFRkN5QUpRUUEyQWdBZ0JRMEJJQUFvQW1BUUpVRUFJUVVnQUVFQU5nSmdEQUlMSUFsQkFEWUNBQXNnQUNBQ0VGQWhCUXNnQzBFUWFpUUFJQVVMOGdNQkJYOENRQUpBSUFBb0Fqd2lBa1VFUUNBQktBSVFEUUZCQVE4TElBSkJOR3dRR0NJRlJRMEJJQUVvQWhBRVFDQUJLQUlZSVFJRFFDQUNJQU5CTkd3aUJHb29BaXdRRkNBQktBSVlJZ0lnQkdwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUNJRVNRMEFDd3NnQVNBQUtBSThCSDhnQUNnQ1pDZ0NHQ0VEUVFBaEFnTkFJQVVnQWtFMGJHb2lCQ0FESUFBb0FrQWdBa0VDZEdvb0FnQkJOR3dpQm1vaUEvMEFBZ0Q5Q3dJQUlBUWdBeWdDTURZQ01DQUVJQVA5QUFJZy9Rc0NJQ0FFSUFQOUFBSVEvUXNDRUNBRUlBQW9BbVFvQWhnaUF5QUdhaUlHS0FJa05nSWtJQVFnQmlnQ0xEWUNMQ0FHUVFBMkFpd2dBa0VCYWlJQ0lBQW9BandpQmtrTkFBc2dBU2dDRUFVZ0JBc0VmeUFBS0FKa0tBSVlJUUpCQUNFREEwQWdBaUFEUVRSc0lnUnFLQUlzRUJRZ0FDZ0NaQ2dDR0NJQ0lBUnFRUUEyQWl3Z0EwRUJhaUlESUFFb0FoQkpEUUFMSUFBb0Fqd0ZJQVlMTmdJUUlBRW9BaGdRRkNBQklBVTJBaGhCQVE4TElBRW9BaGdoQkNBQUtBSmtLQUlZSVFOQkFDRUNBMEFnQkNBQ1FUUnNJZ1ZxSWdRZ0F5QUZhaWdDSkRZQ0pDQUVLQUlzRUJRZ0FTZ0NHQ0lFSUFWcUlBQW9BbVFvQWhnaUF5QUZhaUlGS0FJc05nSXNJQVZCQURZQ0xDQUNRUUZxSWdJZ0FTZ0NFRWtOQUF0QkFROExJQUFvQW1BUUpTQUFRUUEyQW1CQkFBdkZCQUVJZndKQUlBSkZEUUFDUUNBQUtBSzRBU0lGUlEwQUlBQW9BbUFpQkVVTkFDQUVLQUlRUlEwQUlBUW9BaGdvQWlnZ0JVY05BQ0FDS0FJUUlnaEZEUUFnQWlnQ0dDSUdLQUlvRFFBZ0JpZ0NMQTBBUVFBaEJDQUlRUWhQQkVBZ0NFRjRjU0VKQTBBZ0JpQUVRVFJzYWlBRk5nSW9JQVlnQkVFQmNrRTBiR29nQlRZQ0tDQUdJQVJCQW5KQk5HeHFJQVUyQWlnZ0JpQUVRUU55UVRSc2FpQUZOZ0lvSUFZZ0JFRUVja0UwYkdvZ0JUWUNLQ0FHSUFSQkJYSkJOR3hxSUFVMkFpZ2dCaUFFUVFaeVFUUnNhaUFGTmdJb0lBWWdCRUVIY2tFMGJHb2dCVFlDS0NBRVFRaHFJUVFnQ2tFSWFpSUtJQWxIRFFBTEN5QUlRUWR4SWdnRVFBTkFJQVlnQkVFMGJHb2dCVFlDS0NBRVFRRnFJUVFnQzBFQmFpSUxJQWhIRFFBTEN5QUNJQU1RUHcwQVFRQVBDeUFBS0FKa0lnVkZCRUFnQUVFQlFTUVFGeUlGTmdKa0lBVkZEUUVMSUFJZ0JSQklJQUFvQXRnQlFSWWdBeEFvUlEwQUlBQW9BdGdCSWdZb0FnQWhCQ0FHS0FJSUlRVUNRQ0FFQkVCQkFTRUhJQVJCQVhFaENDQUVRUUZHQkg5QkFBVWdCRUYrY1NFSlFRQWhCQU5BQW45QkFDQUhSUTBBR2tFQUlBQWdBU0FESUFVb0FnQVJBQUJGRFFBYUlBQWdBU0FESUFVb0FnUVJBQUJCQUVjTElRY2dCVUVJYWlFRklBUkJBbW9pQkNBSlJ3MEFDeUFIUlFzaEJFRUFJQWNnQ0JzaEJ3SkFJQWhGRFFBZ0JBMEFJQUFnQVNBRElBVW9BZ0FSQUFCQkFFY2hCd3NnQmtFQU5nSUFJQWNOQVNBQUtBSmdFQ1VnQUVFQU5nSmdRUUFQQ3lBR1FRQTJBZ0FMSUFBZ0FoQlFJUWNMSUFjTCtBUUJCbjhDUUVFQlFUQVFGeUlDQkg4Z0FpQUFLQUxnQVNJQi9RQURBUDBMQXdBZ0FpQUJLUU1RTndNUUlBSWdBU2dDR0NJQk5nSVlJQUlnQVVFWWJCQVlJZ0UyQWh3Z0FVVUVRQ0FDRUJSQkFBOExBa0FnQUNnQzRBRW9BaHdpQXdSQUlBRWdBeUFDS0FJWVFSaHNFQllhREFFTElBRVFGQ0FDUVFBMkFod0xJQUlnQUNnQzRBRW9BaVFpQVRZQ0pDQUNJQUZCS0JBWElnRTJBaWdnQVVVRVFDQUNLQUljRUJRZ0FoQVVRUUFQQ3dKQUlBQW9BdUFCS0FJb0JFQWdBaWdDSkVVTkFRTkFJQUVnQlVFb2JDSURhaUFBS0FMZ0FTZ0NLQ0FEYWlnQ0ZDSUJOZ0lVSUFGQkdHd1FHQ0VCSUFJb0FpZ2lCQ0FEYWlJR0lBRTJBaGdnQVVVRVFDQUZCSDlCQUNFQkEwQWdBaWdDS0NBQlFTaHNhaWdDR0JBVUlBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFVREFVTEFrQWdBQ2dDNEFFb0FpZ2dBMm9vQWhnaUJBUkFJQUVnQkNBR0tBSVVRUmhzRUJZYUlBSW9BaWdoQVF3QkN5QUJFQlFnQWlnQ0tDSUJJQU5xUVFBMkFoZ0xJQUVnQTJvZ0FDZ0M0QUVvQWlnZ0Eyb29BZ1FpQVRZQ0JDQUJRUmhzRUJnaEFTQUNLQUlvSWdRZ0Eyb2lCaUFCTmdJUUlBRkZCRUFnQlFSL1FRQWhBUU5BSUFGQktHd2lBQ0FDS0FJb2FpZ0NHQkFVSUFJb0FpZ2dBR29vQWhBUUZDQUJRUUZxSWdFZ0JVY05BQXNnQWlnQ0tBVWdCQXNRRkF3RkN3SkFJQUFvQXVBQktBSW9JQU5xS0FJUUlnUUVRQ0FCSUFRZ0JpZ0NCRUVZYkJBV0dpQUNLQUlvSVFFTUFRc2dBUkFVSUFJb0FpZ2lBU0FEYWtFQU5nSVFDeUFCSUFOcVFnQTNBaUFnQlVFQmFpSUZJQUlvQWlSSkRRQUxEQUVMSUFFUUZDQUNRUUEyQWlnTElBSUZRUUFMRHdzZ0FpZ0NIQkFVSUFJUUZFRUFDNkFHQVE1L0l3QkJFR3NpQ0NRQUlBQW9BbUFvQWhBaERTQUlRUUZCT0JBWElnRTJBZ3dDUUNBQlJRMEFJQUVnQUNnQ1lDZ0NFQ0lKTmdJWUlBRWdBUDBBQW16OUN3SUFJQUVnQUNnQ2dBRTJBaEFnQUNnQ2hBRWhBeUFCUVFBMkFqUWdBU0FETmdJVUlBRWdBQ2dDRENJTUtBSUFOZ0lnSUFFZ0RDZ0NCRFlDSkNBQklBd29BZ2cyQWlnZ0FTQU1LQUlRTmdJc0lBRWdDVUc0Q0JBWElnQTJBakFnQUFSQUlBMEVRQU5BSUE1QnVBaHNJZ0FnRENnQzBDdHFJZ1FvQWdRaEFpQUJLQUl3SUFCcUlnVWdCUDBBQWdEOUN3SUVJQVVnQkNnQ0VEWUNGQ0FGSUFRb0FoUTJBaGdnQWtFZ1RRUkFJQVZCdEFkcUlBUkJzQWRxSUFJUUZob2dCVUd3Qm1vZ0JFR3NCbW9nQkNnQ0JCQVdHZ3NnQlNBRUtBSVlJZ0EyQWh3Z0JTQUVLQUtrQmpZQ3FBWkJBU0VHQWtBZ0FFRUJSd1JBSUFRb0FnUkJBMndpQUVFRGEwSGZBRXNOQVNBQVFRSnJJUVlMSUFWQnBBTnFJUWtnQlVFZ2FpRUtJQVJCSEdvaEMwRUFJUUFDUUNBR1FRaEpEUUFnQkNBR1FRTjBha0VjYWlBS1N3UkFJQXNnQlNBR1FRSjBha0drQTJwSkRRRUxJQVpCZkhFaEFFRUFJUU1EUUNBS0lBTkJBblFpQW1vZ0N5QURRUU4wYWlJSFFSeHFJQWRCRkdvZ0IwRU1haUFIL1Z3Q0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBaUFKYWlBSFFSaHFJQWRCRUdvZ0IwRUlhaUFIL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBMEVFYWlJRElBQkhEUUFMSUFBZ0JrWU5BUXNnQUVFQmNpRUNJQVpCQVhFRVFDQUtJQUJCQW5RaUEyb2dDeUFBUVFOMGFpSUFLQUlFTmdJQUlBTWdDV29nQUNnQ0FEWUNBQ0FDSVFBTElBSWdCa1lOQUFOQUlBb2dBRUVDZENJRGFpQUxJQUJCQTNScUlnSW9BZ1EyQWdBZ0F5QUphaUFDS0FJQU5nSUFJQW9nQUVFQmFpSUNRUUowSWdOcUlBc2dBa0VEZEdvaUFpZ0NCRFlDQUNBRElBbHFJQUlvQWdBMkFnQWdBRUVDYWlJQUlBWkhEUUFMQ3lBRklBUW9BcWdHTmdLc0JpQU9RUUZxSWc0Z0RVY05BQXNMSUFFaEFnd0JDeUFJUVF4cUJFQWdDQ2dDRENJQktBSXdJZ0FFZnlBQUVCUWdDQ2dDREFVZ0FRc1FGQ0FJUVFBMkFnd0xDeUFJUVJCcUpBQWdBZ3Y1QkFFSWZ5TUFRWUFDYXlJREpBQWdBQVJBUWVrTlFSRWdBaEFoSUFNZ0FDZ0NBRFlDOEFFZ0FrR0hFaUFEUWZBQmFoQWFJQU1nQUNnQ0JEWUM0QUVnQWtHVUVpQURRZUFCYWhBYUlBTWdBQ2dDQ0RZQzBBRWdBa0czT0NBRFFkQUJhaEFhSUFNZ0FDZ0NFRFlDd0FFZ0FrSHFFU0FEUWNBQmFoQWFJQUZCQUVvRVFBTkFJQUFvQXRBcklRUWdBeUFITmdLd0FTQUNRWThPSUFOQnNBRnFFQm9nQXlBRUlBZEJ1QWhzYWlJRUtBSUFOZ0tnQVNBQ1FZWVNJQU5Cb0FGcUVCb2dBeUFFS0FJRU5nS1FBU0FDUWFrNUlBTkJrQUZxRUJvZ0F5QUVLQUlJTmdLQUFTQUNRZFUzSUFOQmdBRnFFQm9nQXlBRUtBSU1OZ0p3SUFKQjVUY2dBMEh3QUdvUUdpQURJQVFvQWhBMkFtQWdBa0gxRVNBRFFlQUFhaEFhSUFNZ0JDZ0NGRFlDVUNBQ1FlczVJQU5CMEFCcUVCcEIrZ3RCRnlBQ0VDRWdCQ2dDQkFSQUlBUkJzQWRxSVFZZ0JFR3NCbW9oQ0VFQUlRVURRQ0FJSUFWQkFuUWlDV29vQWdBaENpQURJQVlnQ1dvb0FnQTJBa1FnQXlBS05nSkFJQUpCK0F3Z0EwRkFheEFhSUFWQkFXb2lCU0FFS0FJRVNRMEFDd3NnQWhCN0lBTWdCQ2dDR0RZQ01DQUNRZlUzSUFOQk1Hb1FHaUFESUFRb0FxUUdOZ0lnSUFKQnBqZ2dBMEVnYWhBYVFRRWhCa0dTREVFVUlBSVFJUUpBSUFRb0FoaEJBVWNFUUNBRUtBSUVJZ1ZCQUV3TkFTQUZRUU5zUVFKcklRWUxJQVJCSEdvaENFRUFJUVVEUUNBRElBZ2dCVUVEZEdvcEFnQkNJSWszQXhBZ0FrSDREQ0FEUVJCcUVCb2dCVUVCYWlJRklBWkhEUUFMQ3lBQ0VIc2dBeUFFS0FLb0JqWUNBQ0FDUVpVNElBTVFHa0dHRFVFRklBSVFJU0FIUVFGcUlnY2dBVWNOQUFzTFFZY05RUVFnQWhBaEN5QURRWUFDYWlRQUMrc0pBd2wvQVg0QmV5TUFRYkFCYXlJRkpBQUNRQ0FCUVlBRGNRUkFRWkl1UVFzZ0FoQWhEQUVMQWtBZ0FVRUJjVVVOQUNBQUtBSmdJZ1pGRFFBakFFSFFBR3NpQXlRQVFkc05RUTBnQWhBaElBTkJBRG9BVHlBRFFRazZBRTRnQXlBR0tRSUFOd0pFSUFNZ0EwSE9BR29pQkRZQ1FDQUNRYnM2SUFOQlFHc1FHaUFESUFZcEFnZzNBalFnQXlBRU5nSXdJQUpCcWpvZ0EwRXdhaEFhSUFNZ0JpZ0NFRFlDSkNBRElBUTJBaUFnQWtISU9DQURRU0JxRUJvQ1FDQUdLQUlZUlEwQUlBWW9BaEJGRFFBRFFDQURJQU5CemdCcUlnczJBaEFnQXlBSU5nSVVJQUpCK3cwZ0EwRVFhaEFhSUFZb0FoZ2dDRUUwYkdvaENTTUFRVEJySWdRa0FDQUVRUWs3QUM0Z0JFRUpPZ0F0SUFRZ0NTa0NBRGNDSkNBRUlBUkJMV29pQ2pZQ0lDQUNRWVE0SUFSQklHb1FHaUFFSUFrb0FoZzJBaFFnQkNBS05nSVFJQUpCK2prZ0JFRVFhaEFhSUFRZ0NTZ0NJRFlDQkNBRUlBbzJBZ0FnQWtIZk9TQUVFQm9nQkVFd2FpUUFJQU1nQ3pZQ0FDQUNRWUVOSUFNUUdpQUlRUUZxSWdnZ0JpZ0NFRWtOQUFzTFFZa05RUUlnQWhBaElBTkIwQUJxSkFBTEFrQWdBVUVDY1VVTkFDQUFLQUpnUlEwQVFlWU9RU1FnQWhBaElBVWdBQ2tDYkRjRG9BRWdBa0hVRWlBRlFhQUJhaEFhSUFVZ0FDa0NkRGNEa0FFZ0FrR3lFaUFGUVpBQmFoQWFJQVVnQUNrRGdBRTNBNEFCSUFKQnhCSWdCVUdBQVdvUUdpQUFLQUlNSUFBb0FtQW9BaEFnQWhCVVFZa05RUUlnQWhBaEN3SkFJQUZCQ0hGRkRRQWdBQ2dDWUVVTkFDQUFLQUtBQVNBQUtBS0VBV3dpQkVVTkFDQUFLQUswQVNFREEwQWdBeUFBS0FKZ0tBSVFJQUlRVkNBRFFZd3NhaUVESUFkQkFXb2lCeUFFUncwQUN3c2dBVUVRY1VVTkFDQUFLQUxnQVNFQVFjQU9RU1VnQWhBaElBVWdBUDBBQXdEOUN3UndJQUpCdlN3Z0JVSHdBR29RR2tHdURrRVJJQUlRSVFKQUlBQW9BaHhGRFFBZ0FDZ0NHRVVOQUVFQUlRTURRQ0FBS0FJY0lBTkJHR3hxSWdFdkFRQWhCQ0FCS1FNSUlRd2dCU0FCS0FJUU5nSmdJQVVnRERjRFdDQUZJQVEyQWxBZ0FrSEFPU0FGUWRBQWFoQWFJQU5CQVdvaUF5QUFLQUlZU1EwQUN3dEJodzFCQkNBQ0VDRUNRQ0FBS0FJb0lnUkZEUUFnQUNnQ0pDSUdSUTBBUVFBaEIwRUFJUU1EUUFKQUlBUWdBMEVvYkdvaUFTZ0NCQ0lJUlEwQUlBRW9BaEFpQVVVTkFDQUJLUU1BUWdCWERRQWdBU2tEQ0VJQVVnMEFRZm9LRUhnTkFnc2dCeUFJYWlFSElBTkJBV29pQXlBR1J3MEFDeUFIUlEwQVFaME9RUkFnQWhBaElBQW9BaVFFUUNBQUtBSW9JUUZCQUNFSEEwQWdCU0FCSUFkQktHd2lCR29vQWdRaUJqWUNSQ0FGSUFjMkFrQWdBa0dHT2lBRlFVQnJFQm9nQUNnQ0tDRUJBa0FnQmtVTkFFRUFJUU1nQVNBRWFpZ0NFRVVOQUFOQUlBQW9BaWdnQkdvb0FoQWdBMEVZYkdvaUFmMEFBd0FoRFNBRklBRXBBeEEzQXpnZ0JTQU4vUXNES0NBRklBTTJBaUFnQWtHVjFRQWdCVUVnYWhBYUlBTkJBV29pQXlBR1J3MEFDeUFBS0FJb0lRRUxBa0FnQVNBRWFpSUdLQUlZUlEwQVFRQWhBeUFHS0FJVVJRMEFBMEFnQVNBRWFpZ0NHQ0FEUVJoc2FpSUJMd0VBSVFZZ0FTa0RDQ0VNSUFVZ0FTZ0NFRFlDRUNBRklBdzNBd2dnQlNBR05nSUFJQUpCd0RrZ0JSQWFJQU5CQVdvaUF5QUFLQUlvSWdFZ0JHb29BaFJKRFFBTEN5QUhRUUZxSWdjZ0FDZ0NKRWtOQUFzTFFZY05RUVFnQWhBaEMwR0pEVUVDSUFJUUlRc2dCVUd3QVdva0FBdVJBZ0VEZndKQVFRRkJnQUlRRnlJQkJIOGdBVUVCTmdJQUlBRkJBVFlDMEFFZ0FTQUJMUURVQVVFR2Nqb0ExQUVnQVVFQlFZd3NFQmNpQURZQ0RDQUFSUTBCSUFGQkFVSG9CeEFYSWdBMkFoQWdBRVVOQVNBQlFnQTNBekFnQVVGL05nSXNJQUZCNkFjMkFoUUNRRUVCUVRBUUZ5SUFCRUFnQUVFQU5nSVlJQUJCNUFBMkFpQWdBRUhrQUVFWUVCY2lBallDSENBQ0RRRWdBQkFVQ3lBQlFRQTJBdUFCREFJTElBQkJBRFlDS0NBQklBQTJBdUFCSUFFUU9TSUFOZ0xjQVNBQVJRMEJJQUVRT1NJQU5nTFlBU0FBUlEwQkFrQkI1Z29RZUVVTkFBc2dBVUVBRUhNaUFEWUM3QUVnQUVVRVFDQUJRUUFRY3lJQU5nTHNBU0FBUlEwQ0N5QUJCVUVBQ3c4TElBRVFRRUVBQzVBSkFnbC9BWDRqQUVIUUFXc2lCeVFBSUFBb0FtQWhDUUpBQWtBQ1FDQUFLQUtBQVVFQlJ3MEFJQUFvQW9RQlFRRkhEUUFnQUNnQ3RBRW9BdHdyRFFFTElBQW9BZ2hCQ0VZTkFDQUdRUUZCMGRJQVFRQVFFd3dCQ3dKQUlBRW9BaEFpREVVTkFDQUFLQUs0QVNFS0lBRW9BaGdoQ3lBTVFRaFBCRUFnREVGNGNTRVBBMEFnQ3lBSVFUUnNhaUFLTmdJb0lBc2dDRUVCY2tFMGJHb2dDallDS0NBTElBaEJBbkpCTkd4cUlBbzJBaWdnQ3lBSVFRTnlRVFJzYWlBS05nSW9JQXNnQ0VFRWNrRTBiR29nQ2pZQ0tDQUxJQWhCQlhKQk5HeHFJQW8yQWlnZ0N5QUlRUVp5UVRSc2FpQUtOZ0lvSUFzZ0NFRUhja0UwYkdvZ0NqWUNLQ0FJUVFocUlRZ2dEa0VJYWlJT0lBOUhEUUFMQ3lBTVFRZHhJZ3hGRFFBRFFDQUxJQWhCTkd4cUlBbzJBaWdnQ0VFQmFpRUlJQTFCQVdvaURTQU1SdzBBQ3dzZ0FpQURjaUFFY2lBRmNrVUVRQ0FHUVFSQm96RkJBQkFUSUFCQ0FEY0NIQ0FBSUFBcEFvQUJOd0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEEvSVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkJsZUlBSUFjUUUwRUFJUWdNQVFzZ0NTZ0NDQ0lJSUFKSkJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkI2ZVVBSUFkQkVHb1FFMEVBSVFnTUFRc0NRQ0FKS0FJQUlnZ2dBa3NFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1Fjbm9BQ0FIUWNBQmFoQVRJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FteHJJQUFvQW5SdU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkIxZUVBSUFkQklHb1FFMEVBSVFnTUFRc2dDU2dDRENJQ0lBTkpCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCdk9RQUlBZEJNR29RRTBFQUlRZ01BUXNDUUNBSktBSUVJZ0lnQTBzRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRWnJuQUNBSFFiQUJhaEFUSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbkJySUFBb0FuaHVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFaUGhBQ0FIUVVCckVCTU1BUXNnQ1NnQ0FDSUNJQVJMQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQjhPY0FJQWRCMEFCcUVCTU1BUXNDUUNBSktBSUlJZ0lnQkVrRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRWkhsQUNBSFFhQUJhaEFUSUFBZ0FDZ0NnQUUyQWlRZ0NTZ0NDQ0VFREFFTElBQWdBRFVDZENJUUlBUWdBQ2dDYkd1dGZFSUJmU0FRZ0Q0Q0pBc2dBU0FFTmdJSUlBVkJBRXdFUUNBSElBVTJBbUFnQmtFQlFkRGdBQ0FIUWVBQWFoQVREQUVMSUFrb0FnUWlBaUFGU3dSQUlBY2dBallDZENBSElBVTJBbkFnQmtFQlFjRG1BQ0FIUWZBQWFoQVREQUVMQWtBZ0NTZ0NEQ0lDSUFWSkJFQWdCeUFDTmdLVUFTQUhJQVUyQXBBQklBWkJBa0hqNHdBZ0IwR1FBV29RRXlBQUlBQW9Bb1FCTmdJb0lBa29BZ3doQlF3QkN5QUFJQUExQW5naUVDQUZJQUFvQW5CcnJYeENBWDBnRUlBK0FpZ0xJQUVnQlRZQ0RDQUFJQUF0QUZ4QkFuSTZBRndnQVNBR0VEOUZCRUFNQVFzZ0J5QUIvUUFDQVAwTEJJQUJJQVpCQkVIcE9pQUhRWUFCYWhBVFFRRWhDQXNnQjBIUUFXb2tBQ0FJQzVFQ0FRWi9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1lDSUVSUVJBSUFOQkFVR1Q2d0JCQUJBVFFRQU1BUXRCQUVFRUlBUW9BaEFRRnlJRVJRMEFHaUFCQkVBZ0FDZ0NZQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQjVoSWdCVUVRYWhBVERBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRZm9hSUFVUUV3c2dCQkFVUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBVUlBQW9Ba0FRRkFKQUlBRUVRQ0FBSUFGQkFuUWlCQkFZSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBV0dnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUFGUVNCcUpBQUxtZ1FCQjM4Z0FVRUJRU1FRRnlJRU5nSmdBa0FDUUNBRVJRMEFBa0FnQVNnQzNBRkJFaUFERUNnRVFDQUJLQUxjQVVFVElBTVFLQTBCQ3d3Q0N5QUJLQUxjQVNJSEtBSUFJUVVnQnlnQ0NDRUdBa0FnQlFSQVFRRWhCQ0FGUVFGeElRZ2dCVUVCUmdSL1FRQUZJQVZCZm5FaEJRTkFBbjlCQUNBRVJRMEFHa0VBSUFFZ0FDQURJQVlvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVlvQWdRUkFBQkJBRWNMSVFRZ0JrRUlhaUVHSUFsQkFtb2lDU0FGUncwQUN5QUVSUXNoQlVFQUlBUWdDQnNoQkFKQUlBaEZEUUFnQlEwQUlBRWdBQ0FESUFZb0FnQVJBQUJCQUVjaEJBc2dCMEVBTmdJQUlBUU5BUXdEQ3lBSFFRQTJBZ0FMQWtBZ0FTZ0MyQUZCRkNBREVDZ0VRQ0FCS0FMWUFVRVZJQU1RS0EwQkN3d0NDeUFCS0FMWUFTSUhLQUlBSVFVZ0J5Z0NDQ0VHQWtBZ0JRUkFRUUVoQkNBRlFRRnhJUWdnQlVFQlJnUi9RUUFGSUFWQmZuRWhCVUVBSVFrRFFBSi9RUUFnQkVVTkFCcEJBQ0FCSUFBZ0F5QUdLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUdLQUlFRVFBQVFRQkhDeUVFSUFaQkNHb2hCaUFKUVFKcUlna2dCVWNOQUFzZ0JFVUxJUVZCQUNBRUlBZ2JJUVFDUUNBSVJRMEFJQVVOQUNBQklBQWdBeUFHS0FJQUVRQUFRUUJISVFRTElBZEJBRFlDQUNBRURRRU1Bd3NnQjBFQU5nSUFDeUFDUVFGQkpCQVhJZ0EyQWdBZ0FFVU5BQ0FCS0FKZ0lBQVFTRUVCSVFvTElBb1BDeUFCS0FKZ0VDVWdBVUVBTmdKZ1FRQUxBZ0FMQkFCQkFRczBBQUpBSUFCRkRRQWdBVVVOQUNBQUlBRW9BZ1EyQXJ3QklBQWdBU2dDQURZQ3VBRWdBQ0FCS0FLNFFFRUNjVFlDK0FFTEM3UUZBUWgvSUFBb0FoZ2lCQ2dDRUNJSlJRUkFRUUFQQ3lBRUtBSVlJUVVnQUNnQ0ZDZ0NBQ2dDRkNFRUFrQUNRQ0FCUlFSQVFRQWhBUU5BSUFVb0FoZ2hBaUFFS0FJY0lBUW9BaGhCbUFGc2FpSUFRWXdCYXlnQ0FDSUhJQUJCbEFGcktBSUFJZ2hySVFNZ0FFR1FBV3NvQWdBZ0FFR1lBV3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXRCQUNFQklBQW9Ba0JGQkVBRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVFRWF5Z0NBQ0lISUFCQkRHc29BZ0FpQ0dzaEF5QUFRUWhyS0FJQUlBQkJFR3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXNEUUNBRktBSVlJUUlnQkNnQ0hDQUVLQUlZUVpnQmJHb2lBRUdNQVdzb0FnQWlCeUFBUVpRQmF5Z0NBQ0lJYXlFRElBQkJrQUZyS0FJQUlBQkJtQUZyS0FJQWF5RUFBa0FnQnlBSVJnMEFJQUN0SUFPdGZrSWdpRkFOQUF3REN5QUFJQU5zSVFNQ1FFRUVJQUpCQTNZZ0FrRUhjVUVBUjJvaUFDQUFRUU5HR3lJQ1JRMEFJQUt0SUFPdGZrSWdpRkFOQUF3REMwRi9JUUFnQWlBRGJDSUNJQUZCZjNOTERRRWdCRUhNQUdvaEJDQUZRVFJxSVFVZ0FTQUNhaUlCSVFBZ0JrRUJhaUlHSUFsSERRQUxDeUFBRHd0QmZ3dmFCQUVMZnlBQUJFQWdBQ2dDRkNJQkJFQWdBU2dDQUNJRkJFQWdCU2dDRkNFRElBVW9BaEFFZjBFUVFSRWdBQzBBS0VFQmNSc2hDQU5BSUFNb0Fod2lBZ1JBSUFNb0FpQWlBVUdZQVc0aENrRUFJUWtnQVVHWUFVOEVmd05BSUFJb0FqQWlBUVJBSUFJb0FqUWlCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ01BVWdBUXNRRkNBQ1FRQTJBakFMSUFJb0FsUWlBUVJBSUFJb0FsZ2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ1ZBVWdBUXNRRkNBQ1FRQTJBbFFMSUFJb0FuZ2lBUVJBSUFJb0Fud2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ2VBVWdBUXNRRkNBQ1FRQTJBbmdMSUFKQm1BRnFJUUlnQ1VFQmFpSUpJQXBIRFFBTElBTW9BaHdGSUFJTEVCUWdBMEVBTmdJY0N3SkFJQU1vQWloRkRRQWdBeWdDSkNJQlJRMEFJQUVRRkNBRC9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NKQXNnQXlnQ05CQVVJQU5CekFCcUlRTWdDMEVCYWlJTElBVW9BaEJKRFFBTElBVW9BaFFGSUFNTEVCUWdCVUVBTmdJVUlBQW9BaFFvQWdBUUZDQUFLQUlVSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDRkFzZ0FDZ0NSQkFVSUFBUUZBc0wyUk1CRVg4akFFRWdheUlQSkFBZ0R5QUZOZ0lZSUFFZ0F5Z0NIRUhNQUd4cUtBSWNJQU1vQWlCQm1BRnNhaUVRQWtBQ1FDQURLQUlvRFFBZ0VDZ0NHRVVOQUNBUVFSeHFJUWtEUUFKQUlBa29BZ2dnQ1NnQ0FFY0VmeUFKS0FJTUlBa29BZ1JHQlVFQkN3MEFJQU1vQWlRaUFTQUpLQUlZUVNodVR3UkFJQWhCQVVIdkZVRUFFQk1NQkFzZ0NTZ0NGQ0FCUVNoc2FpSUJLQUlnRUdzZ0FTZ0NKQkJySUFFb0FoUWdBU2dDRUd3aURFVU5BQ0FCS0FJWUlRRWdERUVJVHdSQUlBeEJlSEVoQzBFQUlRb0RRQ0FCUWdBM0FvUUVJQUZDQURjQ3dBTWdBVUlBTndMOEFpQUJRZ0EzQXJnQ0lBRkNBRGNDOUFFZ0FVSUFOd0t3QVNBQlFnQTNBbXdnQVVJQU53SW9JQUZCb0FScUlRRWdDa0VJYWlJS0lBdEhEUUFMQzBFQUlRb2dERUVIY1NJTVJRMEFBMEFnQVVJQU53SW9JQUZCeEFCcUlRRWdDa0VCYWlJS0lBeEhEUUFMQ3lBSlFTUnFJUWtnRFVFQmFpSU5JQkFvQWhoSkRRQUxDeUFGSVF3Q1FDQUNMUUFBUVFKeFJRMEFJQWRCQlUwRVFDQUlRUUpCdnlCQkFCQVREQUVMQWtBZ0JTMEFBRUgvQVVZRVFDQUZMUUFCUVpFQlJnMEJDeUFJUVFKQjZTQkJBQkFUREFFTElBOGdCVUVHYWlJTU5nSVlDMEVVRUJnaUMwVU5BQUovSUFBdEFHeEJBWEVFUUNBQVFTaHFJUkVnQUNnQ0tDRU1JQUJCTEdvTUFRc2dBaTBBaUN4QkFuRUVRQ0FDUWJBb2FpRVJJQUlvQXJBb0lRd2dBa0c4S0dvTUFRc2dEeUFGSUFkcUlBeHJOZ0ljSUE5QkdHb2hFU0FQUVJ4cUN5SVNLQUlBSVFBZ0MwSUFOd0lNSUFzZ0REWUNDQ0FMSUF3MkFnQWdDeUFBSUF4cU5nSUVJQXRCQVJBalJRUkFJQXNRYlJvZ0N5Z0NDQ0FMS0FJQWF5QUxFRElnREdvaEFDQVJLQUlBSVFFZ0VpQVNLQUlBSWdNZ0FpMEFBRUVFY1FSL0lBTWdBR3NnQVdwQkFVMEVRQ0FJUVFGQm9TSkJBQkFUREFNTEFrQWdBQzBBQUVIL0FVWUVRQ0FBTFFBQlFaSUJSZzBCQ3lBSVFRRkJqQ0pCQUJBVERBTUxJQUJCQW1vRklBQUxJQUZySWdCck5nSUFJQkVnQUNBQmFqWUNBQ0FFUVFBMkFnQWdCaUFQS0FJWUlBVnJOZ0lBUVFFaEZ3d0JDeUFRS0FJWUJFQWdFRUVjYWlFSEEwQWdBeWdDSkNFQUlBY29BaFFoQVFKQUlBY29BZ2dnQnlnQ0FFY0VmeUFIS0FJTUlBY29BZ1JHQlVFQkN3MEFJQUVnQUVFb2JHb2lGQ2dDRkNBVUtBSVFiQ0lZUlEwQUlCUW9BaGdoQ1VFQUlSVURRQUpBQW44Z0NTZ0NLRVVFUUNBTElCUW9BaUFnRlNBREtBSW9RUUZxRUdrTUFRc2dDMEVCRUNNTFJRUkFJQWxCQURZQ0pBd0JDeUFKS0FJb1JRUkFRUUFoQVFOQUlBRWlBRUVCYWlFQklBc2dGQ2dDSkNBVklBQVFhVVVOQUFzZ0J5Z0NIQ0VCSUFsQkF6WUNJQ0FKSUFFMkFoZ2dDU0FCSUFCclFRRnFOZ0ljQ3lBSkFuOUJBU0FMUVFFUUkwVU5BQnBCQWlBTFFRRVFJMFVOQUJvZ0MwRUNFQ01pQUVFRFJ3UkFJQUJCQTJvTUFRc2dDMEVGRUNNaUFFRWZSd1JBSUFCQkJtb01BUXNnQzBFSEVDTkJKV29MTmdJa1FRQWhBUU5BSUFFaUFFRUJhaUVCSUF0QkFSQWpEUUFMSUFrZ0NTZ0NJQ0FBYWpZQ0lBSkFBa0FDZnlBSktBSW9JZ0JGQkVBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRQWdDU2dDTUVVRVFDQUpLQUlBUWZBQkVCc2lBVVVOQkNBSklBRTJBZ0FnQVNBSktBSXdRUmhzYWtFQVFmQUJFQmthSUFsQkNqWUNNQXNnQ1NnQ0FDSUtJZ0g5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJQUlBRkNBRGNDRUVFQlFRcEI3UUFnQUVFQmNSc2dBRUVFY1JzaEFVRUFEQUVMSUFrb0FnQWlBU0FBUVFGcklnMUJHR3hxSWdvb0FnUWdDaWdDREVjTkFTQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhEU0FKS0FJd0lnb2dBRUVCYWtrRWZ5QUJJQXBCQ21vaUNrRVliQkFiSWdGRkRRTWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBWkdpQUpJQW8yQWpBZ0NTZ0NBQVVnQVFzZ0FFRVliR29pQ2lJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQUNmMEVCSUExQkJIRU5BQnBCN1FBZ0RVRUJjVVVOQUJwQkFrRUNRUUVnQ2tFTWF5Z0NBQ0lCUVFwR0d5QUJRUUZHR3dzaEFTQUFDeUVOSUFvZ0FUWUNEQXNnQ1NnQ0pDRUFJQUlvQXRBcklBTW9BaHhCdUFoc2FpMEFFRUhBQUhFRVFBTkFJQTFCR0d3aURpQUpLQUlBYWlBQVFRRWdEUnNpRXpZQ0VDQUpLQUlnSVJaQkFDRUtJQUFoQVNBVFFRSlBCRUFEUUNBS1FRRnFJUW9nQVVFRFN5QUJRUUYySVFFTkFBc0xJQW9nRm1vaUFVRWhUd1JBSUE4Z0FUWUNFQ0FJUVFGQml2a0FJQTlCRUdvUUV3d0RDeUFMSUFFUUl5RUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFNZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBMUJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FHeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRR1JvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTlFRRnFJZzFCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FLUVFSeEJFQWdBVUVCTmdJTURBRUxJQXBCQVhFRVFDQUJRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoczJBZ3dGSUFGQjdRQTJBZ3dMREFBTEFBc0RRQ0FOUVJoc0lnNGdDU2dDQUdvaUFTQUJLQUlNSUFFb0FnUnJJZ0VnQUNBQUlBRktHeUlCTmdJUUlBa29BaUFoRTBFQUlRb2dBVUVDVHdSQUEwQWdDa0VCYWlFS0lBRkJBMHNnQVVFQmRpRUJEUUFMQ3lBS0lCTnFJZ0ZCSVU4RVFDQVBJQUUyQWdBZ0NFRUJRWXI1QUNBUEVCTU1BZ3NnQ3lBQkVDTWhDaUFKS0FJQUlnRWdEbW9pRGlBS05nSVVJQUFnRGlnQ0VHc2lBRUVBVEEwQ0lBSW9BdEFySUFNb0FoeEJ1QWhzYWlnQ0VDRUtJQWtvQWpBaURpQU5RUUpxU1FSQUlBRWdEa0VLYWlJT1FSaHNFQnNpQVVVTkFpQUpJQUUyQWdBZ0FTQUpLQUl3UVJoc2FrRUFRZkFCRUJrYUlBa2dEallDTUNBSktBSUFJUUVMSUFFZ0RVRUJhaUlOUVJoc2FpSUIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDQUNBQlFnQTNBaEFnQ2tFRWNRUkFJQUZCQVRZQ0RBd0JDeUFLUVFGeEJFQWdBVUVDUVFKQkFTQUJRUXhyS0FJQUlnRkJDa1liSUFGQkFVWWJOZ0lNQlNBQlFlMEFOZ0lNQ3d3QUN3QUxJQXNRTWd3RkN5QUpRY1FBYWlFSklCVkJBV29pRlNBWVJ3MEFDd3NnQjBFa2FpRUhJQmxCQVdvaUdTQVFLQUlZU1EwQUN3c2dDeEJ0UlFSQUlBc1FNZ3dCQ3lBTEtBSUlJQXNvQWdCcklBc1FNaUFNYWlFQklCRW9BZ0FoQUNBQ0xRQUFRUVJ4QkVBZ0VpZ0NBQ0FCYXlBQWFrRUJUUVJBSUFoQkFVR2hJa0VBRUJNTUFnc0NRQ0FCTFFBQVFmOEJSZ1JBSUFFdEFBRkJrZ0ZHRFFFTElBaEJBVUdNSWtFQUVCTU1BZ3NnQVVFQ2FpRUJDeUFBSUFGR0RRQWdFaUFTS0FJQUlBQWdBV3RxTmdJQUlCRWdBVFlDQUVFQklSY2dCRUVCTmdJQUlBWWdEeWdDR0NBRmF6WUNBQXNnRDBFZ2FpUUFJQmNMbHlRQ0ZIOE9mZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ1ZBNEZBQUVDQXdRS0N3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUJ5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFZYkNBRUVBRUJNTURBc2dBQ2dDTEVVRVFDQUFLQUlrSVFKQkFDRUJEQVVMSUFCQkFEWUNMQ0FBS0FKRUlRTkJBU0VCREFRTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQnM4SUFRUUFRRXd3TEN5QUFLQUlzUlFSQUlBQW9BaVFoQkVFQUlRRU1DQXNnQUVFQU5nSXNJQUFvQWpBaEEwRUJJUUVNQndzQ1FDQUFLQUkwSWdRZ0FDZ0N4QUVpQ2trRVFDQUFLQUpBSWc0Z0NrRUJha2tOQVFzZ0FDZ0M3QUZCQVVHNnd3QkJBQkFUREFvTElBQW9BaXhGQkVBZ0FDZ0NLQ0VMREFZTElBQkNBRGNDNUFFZ0FFRUFOZ0lzSUFBb0FzZ0JJUXdEUUNBTUlBZEJCSFJxSWdVb0FnZ2lEd1JBSUFVb0Fnd2hFa0VBSVFFRFFBSkFJQThnQVVGL2Myb2lFQ0FTSUFGQkJIUnFJaEVvQWdCcUlnbEJIMHNOQUNBRktBSUFJaE5CZnlBSmRrc05BQ0FBSUFJZ0V5QUpkQ0lKSUFJZ0NVa2JJQWtnQWhzaUFqWUM1QUVMQWtBZ0VTZ0NCQ0FRYWlJSlFSOUxEUUFnQlNnQ0JDSVFRWDhnQ1haTERRQWdBQ0FESUJBZ0NYUWlDU0FESUFsSkd5QUpJQU1iSWdNMkF1Z0JDeUFCUVFGcUlnRWdEMGNOQUFzTElBZEJBV29pQnlBS1J3MEFDeUFDUlEwSElBTkZEUWNnQUMwQUFFVUVRQ0FBSUFBb0F0QUJOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DeUFBS0FJd0lRVkJBU0VCREFVTEFrQWdBQ2dDTkNJRklBQW9Bc1FCSWdsSkJFQWdBQ2dDUUNJU0lBbEJBV3BKRFFFTElBQW9BdXdCUVFGQmpjTUFRUUFRRXd3SkN5QUFLQUlzUlFSQUlBQW9Bc2dCSWcwZ0FDZ0NIQ0lFUVFSMGFpRUxJQUFvQWlnaENBd0VDeUFBUWdBM0F1UUJJQUJCQURZQ0xDQUFLQUxJQVNFTkEwQWdEU0FHUVFSMGFpSUtLQUlJSWc0RVFDQUtLQUlNSVJCQkFDRUJBMEFDUUNBT0lBRkJmM05xSWhFZ0VDQUJRUVIwYWlJVEtBSUFhaUlNUVI5TERRQWdDaWdDQUNJVVFYOGdESFpMRFFBZ0FDQUNJQlFnREhRaURDQUNJQXhKR3lBTUlBSWJJZ0kyQXVRQkN3SkFJQk1vQWdRZ0VXb2lERUVmU3cwQUlBb29BZ1FpRVVGL0lBeDJTdzBBSUFBZ0F5QVJJQXgwSWd3Z0F5QU1TUnNnRENBREd5SUROZ0xvQVFzZ0FVRUJhaUlCSUE1SERRQUxDeUFHUVFGcUlnWWdDVWNOQUFzZ0FrVU5CaUFEUlEwR0FrQWdBQzBBQUFSQUlBQW9BbXdoQmd3QkN5QUFJQUFvQXRBQklnWTJBbXdnQUNBQUtBTE1BVFlDWkNBQUlBQW9BdGdCTmdKd0lBQWdBQ2dDMUFFMkFtZ0xRUUVoQVF3REN3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUR5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFlRENBRUVBRUJNTUJnc2dBQ2dDTEVVRVFDQUFLQUxJQVNBQUtBSWNJZ1pCQkhScUlRVWdBQ2dDS0NFSFFRQWhBUXdDQ3lBQUlBWTJBaHdnQUVFQU5nSXNRUUVoQVF3QkN3TkFBbjhDUUNBQlJRUkFJQUpCQVdvaEFnd0JDeUFBSUFNMkFpZ2dBQ2dDT0NBRFRRMEpJQUFvQWpBaEJFRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUVOZ0lnSUFRZ0FDZ0NQRThOQVNBQUlBWTJBaHdnQmlFQlFRQWhCUXdFQ3lBQUlBSTJBaVFnQUNnQ1RDQUNUUVJBSUFBb0Fod2hBVUVCSVFVTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBQW9BaWhzYWlBQUtBSVVJQUFvQWh4c2FpQUFLQUlZSUFKc2FpSUJJQUFvQWdoUEJFQU1EQXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNRFFzZ0FDZ0NLRUVCYWlFRERBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUNBRlJRUkFJQUVnQjA4TkFTQUFLQUlnSWdVZ0FDZ0N5QUVnQVVFRWRHb2lEU2dDQ0U4TkF5QUFMUUFBUlFSQUlBQWdEU2dDRENBRlFRUjBhaUlCS0FJTUlBRW9BZ2hzTmdKTUN5QUFLQUpJSVFKQkFTRUJEQVVMSUFBZ0FVRUJhaUlCTmdJY0RBRUxJQUFvQWlCQkFXb2hCRUVBSVFFTUF3dEJBQ0VGREFFTFFRRWhCUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0IwRUJhaUlITmdJb0RBRUxJQVlnRDA4TkNDQUFRZ0EzQXVRQklBQW9Bc2dCSUFaQkJIUnFJZ1VvQWdnaUMwVU5DQ0FGS0FJTUlRcEJBQ0VDUVFBaEJFRUFJUUVEUUFKQUlBc2dBVUYvYzJvaUNTQUtJQUZCQkhScUlnNG9BZ0JxSWdoQkgwc05BQ0FGS0FJQUlneEJmeUFJZGtzTkFDQUFJQVFnRENBSWRDSUlJQVFnQ0VrYklBZ2dCQnNpQkRZQzVBRUxBa0FnRGlnQ0JDQUphaUlJUVI5TERRQWdCU2dDQkNJSlFYOGdDSFpMRFFBZ0FDQUNJQWtnQ0hRaUNDQUNJQWhKR3lBSUlBSWJJZ0kyQXVnQkN5QUJRUUZxSWdFZ0MwY05BQXNnQkVVTkJpQUNSUTBHQWtBZ0FDMEFBQVJBSUFBb0Ftd2hBZ3dCQ3lBQUlBQW9BdEFCSWdJMkFtd2dBQ0FBS0FMTUFUWUNaQ0FBSUFBb0F0Z0JOZ0p3SUFBZ0FDZ0MxQUUyQW1nTFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBSTJBdUFCSUFJZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0IwMEVRQ0FBS0FJZ0lRTkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBSGJHb2dBQ2dDRkNBR2JHb2dBQ2dDR0NBQUtBSWtiR29pQVNBQUtBSUlUd1JBREFzTElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBd0xJQUFnQmtFQmFpSUdOZ0ljREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQ0FBQW44Z0FVVUVRQ0FBSUEwMkF0d0JJQTBnQUNnQ2FFOE5BaUFBS0FJd0RBRUxJQU5CQVdvTElnTTJBaUFnQUNnQ1BDSUJJQVVvQWdnaUJDQUJJQVJKR3lBRFN3UkFJQVVvQWdBaUFTQUJyU0llSUFRZ0EwRi9jMm9pQ0swaUZvWWlGeUFXaUtkSERRTWdCU2dDQkNJRVFuOGdGb2luY1NBRVJ3MERJQVN0SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlDYTE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlEcTE4SUJlQUlSd2dBVUovSUFVb0Fnd2dBMEVFZEdvaUN5Z0NBQ0lLSUFocXJTSWRpS2R4SUFGSERRTWdCQ0FWSUFzb0FnUWlBU0FJYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUJLMGlJaUFoZ2tJQVVnUkFJQVFnQ1VjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQkswaUZTQWVJQjJHZ2tJQVVnUkFJQVFnRGtjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0N5Z0NDQ0lFUlEwRElBc29BZ3hGRFFNZ0hLY2lDeUFncDBZTkF5QWFweUlJSUIrblJnMERJQUFnQUNnQ1JDSUhOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0NuWWdDeUFLZG1zZ0dTQWlmQ0FZZ0tjZ0FYWWdDQ0FCZG1zZ0JHeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnUnFJQUVnQkhCcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUVhaUFCSUFSd2F5RUNRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQUNBSVFRRnFJZ2cyQWlnTUFRc2dBQ0FHTmdMZ0FTQUFLQUp3SUFaTkRRY2dBQ2dDWkNFUFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBODJBdHdCSUE4Z0FDZ0NhRThOQVNBQUlBVTJBaHdnQlNFRVFRQWhBUXdFQ3lBQUtBSTRJQWhOQkVBZ0FDZ0NJQ0VIUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dDR3hxSUFBb0FoUWdCR3hxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0tDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdMQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ1pxSUFFZ0JuQnJJUVlNQVF0QkFDRUJEQU1MUVFFaEFRd0NDd05BQWtBQ1FBSkFBa0FnQVVVRVFDQUVJQkpQRFFJZ0FDQUFLQUl3SWdjMkFpQWdEU0FFUVFSMGFpRUxEQUVMSUFBZ0IwRUJhaUlITmdJZ0N5QUFLQUk4SWdFZ0N5Z0NDQ0lDSUFFZ0Fra2JJQWRMQkVBZ0N5Z0NBQ0lCSUFHdEloNGdBaUFIUVg5emFpSUtyU0lXaGlJWElCYUlwMGNOQXlBTEtBSUVJZ0pDZnlBV2lLZHhJQUpIRFFNZ0FxMGlGU0FXaGlJWVFnRjlJaGtnQURVQzJBRjhJQmlBSVI4Z0dTQUFLQUxRQVNJT3JYd2dHSUFoR2lBWFFnRjlJaHNnQURVQzFBRjhJQmVBSVNBZ0d5QUFLQUxNQVNJTXJYd2dGNEFoSENBQlFuOGdDeWdDRENBSFFRUjBhaUlES0FJQUlna2dDbXF0SWgySXAzRWdBVWNOQXlBQ0lCVWdBeWdDQkNJQklBcHFyU0lWaGlJaElCV0lwMGNOQXlBQUtBTGdBU0lDclNJaUlDR0NRZ0JTQkVBZ0FpQU9SdzBFUW44Z0ZZWkNmNFVnR2tMLy8vLy9ENE1nRm9hRFVBMEVDeUFBS0FMY0FTSUNyU0lWSUI0Z0hZYUNRZ0JTQkVBZ0FpQU1SdzBFUW44Z0hZWkNmNFVnSEVMLy8vLy9ENE1nRm9hRFVBMEVDeUFES0FJSUlnSkZEUU1nQXlnQ0RFVU5BeUFjcHlJRElDQ25SZzBESUJxbklnb2dINmRHRFFNZ0FDQUFLQUpFSWdnMkFpZ2dBQ0FWSUJ0OElCZUFweUFKZGlBRElBbDJheUFaSUNKOElCaUFweUFCZGlBS0lBRjJheUFDYkdvMkFpUkJBU0VCREFVTElBQWdCRUVCYWlJRU5nSWNEQUVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlBbW9nQVNBQ2NHc2hEMEVBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0MwRUJhaUlMTmdJb0RBRUxJQUFnQlRZQ0lDQUFLQUk4SUFWTkRRWWdBQ2dDYkNFSVFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBZzJBdUFCSUFnZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0MwMEVRQ0FBS0FJY0lRWkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBTGJHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUFLQUlrYkdvaUFTQUFLQUlJVHdSQURBa0xJQUFvQWdRZ0FVRUJkR29pQVM4QkFBMEJEQW9MSUFBb0FpQkJBV29oQlF3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnRFRZQzNBRWdEU0FBS0FKb1R3MENJQUFnQkRZQ0hDQUVJUVlNQVFzZ0FDQUdRUUZxSWdZMkFod0xJQVlnRGtrRVFDQUFLQUlnSWdjZ0FDZ0N5QUVnQmtFRWRHb2lBU2dDQ0NJRFR3MERJQUVvQWdBaUFpQUNyU0llSUFNZ0IwRi9jMm9pQ3EwaUZvWWlGeUFXaUtkSERRTWdBU2dDQkNJRFFuOGdGb2luY1NBRFJ3MERJQU90SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlENjE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlDYTE4SUJlQUlSd2dBa0ovSUFFb0Fnd2dCMEVFZEdvaUFTZ0NBQ0lISUFwcXJTSWRpS2R4SUFKSERRTWdBeUFWSUFFb0FnUWlBaUFLYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUE2MGlJaUFoZ2tJQVVnUkFJQU1nRDBjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQTYwaUZTQWVJQjJHZ2tJQVVnUkFJQU1nQ1VjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0FTZ0NDQ0lEUlEwRElBRW9BZ3hGRFFNZ0hLY2lBU0FncDBZTkF5QWFweUlLSUIrblJnMERJQUFnQUNnQ1JDSUxOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0IzWWdBU0FIZG1zZ0dTQWlmQ0FZZ0tjZ0FuWWdDaUFDZG1zZ0EyeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnSnFJQUVnQW5CcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUNhaUFCSUFKd2F5RUlRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQkVFQmFpRUVEQUVMSUFBZ0F6WUNJQ0FBS0FJOElBTk5EUVVnQUNnQ1JDRUNRUUFNQVF0QkFRc2hBUU5BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQUkyQWlnZ0FpQUFLQUk0VHcwQklBQWdCallDSENBR0lRRkJBQ0VGREFRTElBQWdCRFlDSkNBQUtBSk1JQVJOQkVBZ0FDZ0NIQ0VCUVFFaEJRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dBQ2dDS0d4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0JHeHFJZ0VnQUNnQ0NFOEVRQXdJQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3SkN5QUFLQUlnUVFGcUlRTU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUlBVkZCRUFnQVNBSFR3MEJJQUFvQWlBaUJTQUFLQUxJQVNBQlFRUjBhaUlOS0FJSVR3MERJQUF0QUFCRkJFQWdBQ0FOS0FJTUlBVkJCSFJxSWdFb0Fnd2dBU2dDQ0d3MkFrd0xJQUFvQWtnaEJFRUJJUUVNQlFzZ0FDQUJRUUZxSWdFMkFod01BUXNnQUNnQ0tFRUJhaUVDUVFBaEFRd0RDMEVBSVFVTUFRdEJBU0VGREFBTEFBc0FDd0FMUVFBUEN5QUFLQUxzQVVFQlFab0tRUUFRRXd0QkFBOExJQUZCQVRzQkFFRUJDNVlMQVFwL0FrQWdBU2dDQUNBRVFRTnNJZ3gySWdaQmtJQ0FBWEVOQUNBQUlBQkJIR29pRGlBQUtBSnNJQVpCN3dOeGFpMEFBRUVDZEdvaUNqWUNhQ0FBSUFBb0FnUWdDaWdDQUNJSktBSUFJZ2hySWdZMkFnUUNRQ0FJSUFBb0FnQWlCMEVRZGtzRVFDQUpLQUlFSVFzZ0FDQUlOZ0lFSUFvZ0NVRUlRUXdnQmlBSVNTSUdHMm9vQWdBMkFnQWdDeUFMUlNBR0d5RUpJQUFvQWdnaEJnTkFBa0FnQmcwQUlBQW9BaEFpQmtFQmFpRUxJQVl0QUFFaENpQUdMUUFBUWY4QlJnUkFJQXBCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJnd0NDeUFBSUFzMkFoQWdCeUFLUVFsMGFpRUhRUWNoQmd3QkN5QUFJQXMyQWhCQkNDRUdJQWNnQ2tFSWRHb2hCd3NnQUNBR1FRRnJJZ1kyQWdnZ0FDQUhRUUYwSWdjMkFnQWdBQ0FJUVFGMElnZzJBZ1FnQ0VHQWdBSkpEUUFMSUFnaEJnd0JDeUFBSUFjZ0NFRVFkR3NpQnpZQ0FDQUdRWUNBQW5GRkJFQWdDU2dDQkNFTElBb2dDVUVNUVFnZ0JpQUlTU0lJRzJvb0FnQTJBZ0FnQzBVZ0N5QUlHeUVKSUFBb0FnZ2hDQU5BQWtBZ0NBMEFJQUFvQWhBaUNFRUJhaUVMSUFndEFBRWhDaUFJTFFBQVFmOEJSZ1JBSUFwQmtBRlBCRUFnQUNBQUtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBQUlBczJBaEFnQnlBS1FRbDBhaUVIUVFjaENBd0JDeUFBSUFzMkFoQkJDQ0VJSUFjZ0NrRUlkR29oQndzZ0FDQUlRUUZySWdnMkFnZ2dBQ0FIUVFGMElnYzJBZ0FnQUNBR1FRRjBJZ1kyQWdRZ0JrR0FnQUpKRFFBTERBRUxJQWtvQWdRaENRc2dDVVVOQUNBQUlBNGdBU2dDQkNBTVFSRnFka0VFY1NBQlFRUnJJZzBvQWdBZ0RFRVRhblpCQVhFZ0FTZ0NBQ0lJSUF4QkVHcDJRY0FBY1NBSUlBeDJRYW9CY1hJZ0NDQU1RUXhxUVE0Z0JCdDJRUkJ4Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ3pZQ2FDQUFJQVlnQ3lnQ0FDSUtLQUlBSWdocklnWTJBZ1FDUUNBSUlBZEJFSFpMQkVBZ0NpZ0NCQ0VKSUFBZ0NEWUNCQ0FMSUFwQkNFRU1JQVlnQ0VraUJodHFLQUlBTmdJQUlBa2dDVVVnQmhzaENpQUFLQUlJSVFZRFFBSkFJQVlOQUNBQUtBSVFJZ1pCQVdvaEN5QUdMUUFCSVFrZ0JpMEFBRUgvQVVZRVFDQUpRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFZTUFnc2dBQ0FMTmdJUUlBY2dDVUVKZEdvaEIwRUhJUVlNQVFzZ0FDQUxOZ0lRUVFnaEJpQUhJQWxCQ0hScUlRY0xJQUFnQmtFQmF5SUdOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdDRUVCZENJSU5nSUVJQWhCZ0lBQ1NRMEFDd3dCQ3lBQUlBY2dDRUVRZEdzaUNUWUNBQ0FHUVlDQUFuRkZCRUFnQ2lnQ0JDRUhJQXNnQ2tFTVFRZ2dCaUFJU1NJSUcyb29BZ0EyQWdBZ0IwVWdCeUFJR3lFS0lBQW9BZ2doQndOQUFrQWdCdzBBSUFBb0FoQWlCMEVCYWlFTElBY3RBQUVoQ0NBSExRQUFRZjhCUmdSQUlBaEJrQUZQQkVBZ0FDQUFLQUlNUVFGcU5nSU1JQWxCZ1A0RGFpRUpRUWdoQnd3Q0N5QUFJQXMyQWhBZ0NTQUlRUWwwYWlFSlFRY2hCd3dCQ3lBQUlBczJBaEJCQ0NFSElBa2dDRUVJZEdvaENRc2dBQ0FIUVFGcklnYzJBZ2dnQUNBSlFRRjBJZ2syQWdBZ0FDQUdRUUYwSWdZMkFnUWdCa0dBZ0FKSkRRQUxEQUVMSUFvb0FnUWhDZ3NnQWlBRFFRQWdBMnNnQ2lBUFFaREFBV290QUFBaUFrWWJOZ0lBSUEwZ0RTZ0NBRUVnSUF4MGNqWUNBQ0FCSUFFb0FnQWdBaUFLY3lJRFFSTjBRUkJ5SUF4MGNqWUNBQ0FCSUFFb0FnUkJDQ0FNZEhJMkFnUWdCQ0FGY2tVRVFDQUJRWDRnQUNnQ2ZHdEJBblJxSWdJZ0FpZ0NCRUdBZ0FKeU5nSUVJQUlnQWlnQ0FDQURRUjkwY2tHQWdBUnlOZ0lBSUFKQkJHc2lBaUFDS0FJQVFZQ0FDSEkyQWdBTElBUkJBMGNOQUNBQklBQW9BbnhCQW5ScUlnQkJCR29nQUNnQ0JFRUVjallDQUNBQUlBQW9BZ3hCQVhJMkFnd2dBQ0FBS0FJSUlBTkJFblJ5UVFKeU5nSUlDd3V1Q3dFSmZ3SkFJQUVvQWdBZ0JFRURiQ0lOZGlJSFFaQ0FnQUZ4RFFBZ0IwSHZBM0VpQjBVTkFDQUFJQUJCSEdvaURpQUFLQUpzSUFkcUxRQUFRUUowYWlJTE5nSm9JQUFnQUNnQ0JDQUxLQUlBSWdvb0FnQWlDV3NpQnpZQ0JBSkFJQWtnQUNnQ0FDSUlRUkIyU3dSQUlBb29BZ1FoRENBQUlBazJBZ1FnQ3lBS1FRaEJEQ0FISUFsSklnY2JhaWdDQURZQ0FDQU1JQXhGSUFjYklRb2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRd2dCeTBBQVNFTElBY3RBQUJCL3dGR0JFQWdDMEdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSERBSUxJQUFnRERZQ0VDQUlJQXRCQ1hScUlRaEJCeUVIREFFTElBQWdERFlDRUVFSUlRY2dDQ0FMUVFoMGFpRUlDeUFBSUFkQkFXc2lCellDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWxCQVhRaUNUWUNCQ0FKUVlDQUFra05BQXNnQ1NFSERBRUxJQUFnQ0NBSlFSQjBheUlJTmdJQUlBZEJnSUFDY1VVRVFDQUtLQUlFSVF3Z0N5QUtRUXhCQ0NBSElBbEpJZ2tiYWlnQ0FEWUNBQ0FNUlNBTUlBa2JJUW9nQUNnQ0NDRUpBMEFDUUNBSkRRQWdBQ2dDRUNJSlFRRnFJUXdnQ1MwQUFTRUxJQWt0QUFCQi93RkdCRUFnQzBHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUpEQUlMSUFBZ0REWUNFQ0FJSUF0QkNYUnFJUWhCQnlFSkRBRUxJQUFnRERZQ0VFRUlJUWtnQ0NBTFFRaDBhaUVJQ3lBQUlBbEJBV3NpQ1RZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFkQkFYUWlCellDQkNBSFFZQ0FBa2tOQUFzTUFRc2dDaWdDQkNFS0N3SkFJQXBGRFFBZ0FDQU9JQUVvQWdRZ0RVRVJhblpCQkhFZ0FVRUVheUlQS0FJQUlBMUJFMnAyUVFGeElBRW9BZ0FpQ1NBTlFSQnFka0hBQUhFZ0NTQU5ka0dxQVhGeUlBa2dEVUVNYWtFT0lBUWJka0VRY1hKeWNpSUtRWkMrQVdvdEFBQkJBblJxSWd3MkFtZ2dBQ0FISUF3b0FnQWlDeWdDQUNJSmF5SUhOZ0lFSUFwQmtNQUJhaTBBQUNFT0FrQWdDU0FJUVJCMlN3UkFJQXNvQWdRaENpQUFJQWsyQWdRZ0RDQUxRUWhCRENBSElBbEpJZ2NiYWlnQ0FEWUNBQ0FLSUFwRklBY2JJUXNnQUNnQ0NDRUhBMEFDUUNBSERRQWdBQ2dDRUNJSFFRRnFJUXdnQnkwQUFTRUtJQWN0QUFCQi93RkdCRUFnQ2tHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUhEQUlMSUFBZ0REWUNFQ0FJSUFwQkNYUnFJUWhCQnlFSERBRUxJQUFnRERZQ0VFRUlJUWNnQ0NBS1FRaDBhaUVJQ3lBQUlBZEJBV3NpQnpZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFsQkFYUWlDVFlDQkNBSlFZQ0FBa2tOQUFzTUFRc2dBQ0FJSUFsQkVIUnJJZ28yQWdBZ0IwR0FnQUp4UlFSQUlBc29BZ1FoQ0NBTUlBdEJERUVJSUFjZ0NVa2lDUnRxS0FJQU5nSUFJQWhGSUFnZ0NSc2hDeUFBS0FJSUlRZ0RRQUpBSUFnTkFDQUFLQUlRSWdoQkFXb2hEQ0FJTFFBQklRa2dDQzBBQUVIL0FVWUVRQ0FKUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBS1FZRCtBMm9oQ2tFSUlRZ01BZ3NnQUNBTU5nSVFJQW9nQ1VFSmRHb2hDa0VISVFnTUFRc2dBQ0FNTmdJUVFRZ2hDQ0FLSUFsQkNIUnFJUW9MSUFBZ0NFRUJheUlJTmdJSUlBQWdDa0VCZENJS05nSUFJQUFnQjBFQmRDSUhOZ0lFSUFkQmdJQUNTUTBBQ3d3QkN5QUxLQUlFSVFzTElBSWdBMEVBSUFOcklBc2dEa1liTmdJQUlBOGdEeWdDQUVFZ0lBMTBjallDQUNBQklBRW9BZ0FnQ3lBT2N5SUNRUk4wUVJCeUlBMTBjallDQUNBQklBRW9BZ1JCQ0NBTmRISTJBZ1FnQkNBR2NrVUVRQ0FCSUFWQkFuUnJJZ0FnQUNnQ0JFR0FnQUp5TmdJRUlBQWdBQ2dDQUNBQ1FSOTBja0dBZ0FSeU5nSUFJQUJCQkdzaUFDQUFLQUlBUVlDQUNISTJBZ0FMSUFSQkEwY05BQ0FCSUFWQkFuUnFJZ0FnQUNnQ0JFRUJjallDQkNBQUlBQW9BZ0FnQWtFU2RISkJBbkkyQWdBZ0FFRUVheUlBSUFBb0FnQkJCSEkyQWdBTElBRWdBU2dDQUVHQWdJQUJJQTEwY2pZQ0FBc0xyUUVBSUFCQnNLSUJOZ0prSUFCQnNLSUJOZ0pnSUFCQnNLSUJOZ0pjSUFCQnNLSUJOZ0pZSUFCQnNLSUJOZ0pVSUFCQnNLSUJOZ0pRSUFCQnNLSUJOZ0pNSUFCQnNLSUJOZ0pJSUFCQnNLSUJOZ0pFSUFCQnNLSUJOZ0pBSUFCQnNLSUJOZ0k4SUFCQnNLSUJOZ0k0SUFCQnNLSUJOZ0kwSUFCQnNLSUJOZ0l3SUFCQnNLSUJOZ0lzSUFCQnNLSUJOZ0lvSUFCQnNLSUJOZ0lrSUFCQnNLSUJOZ0lnSUFCQnNLSUJOZ0ljQy9RRkFnbC9BWDRnQUNBQk5nSUFJQUQ5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dNSUlBQWdBellDSENBQUlBSkJBV3NpQmpZQ0dDQUJRUU54SVFvQ2Z5QUNRUUJNQkVBZ0FTRUVJQU1NQVFzZ0FDQUJRUUZxSWdRMkFnQWdBUzBBQUFzaEFVRUlJUWdnQUVFSU5nSVFJQUFnQVVIL0FVWWlDVFlDRkNBQUlBR3RJZzAzQXdnQ1FDQUtRUU5HRFFBZ0FDQUNRUUpySWdzMkFoZ2dBQUovSUFKQkFrZ0VRQ0FFSVFVZ0F3d0JDeUFBSUFSQkFXb2lCVFlDQUNBRUxRQUFDeUlFUWY4QlJpSUpOZ0lVSUFCQkQwRVFJQUZCL3dGR0d5SUlOZ0lRSUFBZ0JFRUlkQ0FCY3EwaURUY0RDQ0FLUVFKR0JFQWdCU0VFSUFZaEFpQUxJUVlNQVFzZ0FDQUNRUU5ySWd3MkFoZ2dBQUovSUFKQkEwZ0VRQ0FGSVFjZ0F3d0JDeUFBSUFWQkFXb2lCellDQUNBRkxRQUFDeUlCUWY4QlJpSUpOZ0lVSUFCQkIwRUlJQVJCL3dGR0d5QUlhaUlGTmdJUUlBQWdBYTBnQ0syR0lBMkVJZzAzQXdnZ0NrRUJSZ1JBSUFjaEJDQUZJUWdnQ3lFQ0lBd2hCZ3dCQ3lBQUlBSkJCR3NpQmpZQ0dDQUFBbjhnQWtFRVNBUkFJQWNoQkNBRERBRUxJQUFnQjBFQmFpSUVOZ0lBSUFjdEFBQUxJZ0pCL3dGR0lnazJBaFFnQUVFSFFRZ2dBVUgvQVVZYklBVnFJZ2cyQWhBZ0FDQUNyU0FGcllZZ0RZUWlEVGNEQ0NBTUlRSUxBa0FnQWtFRlRnUkFJQVFvQWdBaEF5QUFJQUpCQldzMkFoZ2dBQ0FFUVFScU5nSUFEQUVMUVFBaEFVRi9RUUFnQXhzaEF5QUNRUUpJRFFBRFFDQUFJQVJCQVdvaUFqWUNBQ0FFTFFBQUlRUWdBQ0FHUVFGcklnVTJBaGdnQTBIL0FTQUJkRUYvYzNFZ0JDQUJkSEloQXlBQlFRaHFJUUVnQmtFQlN5QUNJUVFnQlNFR0RRQUxDeUFBSUFOQkdIWWlBVUgvQVVZMkFoUWdBRUVIUVFnZ0NSc2lBa0VIUVFnZ0EwSC9BWEVpQkVIL0FVWWJhaUlHUVFkQkNDQURRUWgyUWY4QmNTSUZRZjhCUmh0cUlnZEJCMEVJSUFOQkVIWkIvd0Z4SWdOQi93RkdHeUFJYW1vMkFoQWdBQ0FGSUFKMElBTWdCblJ5SUFFZ0IzUnlJQVJ5clNBSXJZWWdEWVEzQXdnTHR3VUNFbjhDZmdKL0lBQW9BaHdnQVVHWUFXeHFJZ0pCa0FGcktBSUFJQUpCbUFGcktBSUFheUlESVFVZ0FrR01BV3NvQWdBZ0FrR1VBV3NvQWdCcklnSWhCa0hBQUNBRElBTkJ3QUJQR3lFRFFjQUFJQUlnQWtIQUFFOGJJUVFDUUNBRlJRMEFJQVpGRFFBZ0EwVU5BQ0FFUlEwQUlBTkJmeUFFYmtFQ2Rrc05BRUVCUVJ3UUZ5SUNJQVEyQWd3Z0FpQUROZ0lJSUFJZ0JqWUNCQ0FDSUFVMkFnQWdBaUFFclNJVUlBYXRmRUlCZlNBVWdDSVVweUlFTmdJVUlBSWdBNjBpRlNBRnJYeENBWDBnRllBaUZhY2lBellDRUFKQUlCUkMvLy8vL3crRElCVkMvLy8vL3crRGZrSWdpS2NOQUNBQ1FRUWdBeUFFYkJBWElnTTJBaGdnQTBVTkFDQUNEQUlMSUFJUUZBdEJBQXNpQ1VVRVFFRUFEd3NDUUNBQkJFQURRQ0FPUVpnQmJDSVBJQUFvQWh4cUlnVW9BaGdpQWdSQUlBVkJIR29oRUNBRktBSVVJUU1nQlNnQ0VDRUVRUUFoQ2dOQUlBTWdCR3dFUUNBUUlBcEJKR3hxSVFaQkFDRUxBMEFnQmlnQ0ZDQUxRU2hzYWlJSUtBSVVJZ0lnQ0NnQ0VDSUhiQVJBUVFBaEJBTkFJQWdvQWhnZ0JFSEVBR3hxSWdNb0Fqd2lFUVJBSUFNb0Fnd2hCeUFES0FJVUlSSWdBeWdDRUNFTUlBTW9BZ2dpRXlBR0tBSUFheUVESUFZb0FoQWlEVUVCY1FSQUlBQW9BaHdnRDJvaUFrR1FBV3NvQWdBZ0Eyb2dBa0dZQVdzb0FnQnJJUU1MSUFjZ0JpZ0NCR3NoQWlBTlFRSnhCRUFnQWlBQUtBSWNJQTlxSWcxQmpBRnJLQUlBYWlBTlFaUUJheWdDQUdzaEFnc2dDU0FESUFJZ0F5QU1JQk5ySWd4cUlCSWdCMnNnQW1vZ0VVRUJJQXhCQUJBcVJRMEpJQWdvQWhBaEJ5QUlLQUlVSVFJTElBUkJBV29pQkNBQ0lBZHNTUTBBQ3lBRktBSVFJUVFnQlNnQ0ZDRURDeUFMUVFGcUlnc2dBeUFFYkVrTkFBc2dCU2dDR0NFQ0N5QUtRUUZxSWdvZ0Fra05BQXNMSUE1QkFXb2lEaUFCUncwQUN3c2dDUThMSUFrUUowRUFDOGdNQWc1L0Juc2dBQ2dDQ0NJTElBQW9BZ1JxSVFjQ1FDQUFLQUlNUlFSQUlBZEJBa2dOQVNBQktBSUFJQUVnQzBFQ2RHb2lEU2dDQUNJRVFRRnFRUUYxYXlFRElBQW9BZ0FoQmdKQUlBZEJCRWtFUUNBRUlRSU1BUXNnQjBFRWF5SUFRUUYySWdsQkFXb2hEQUpBSUFCQkZra0VRRUVCSVFBTUFRc2dCaUFCSUF0QkFuUnFJZ1VnQ1VFQ2RDSUNha0VJYWtrZ0JpQUpRUU4wYWtFSWFpSUFJQVZCQkdwTGNRUkFRUUVoQUF3QkN5QUdJQUVnQW1wQkNHcEpJQUZCQkdvZ0FFbHhCRUJCQVNFQURBRUxJQXhCL1AvLy93ZHhJZ1ZCQVhJaEFDQUZRUUYwSVFnZ0JQMFJJUkFnQS8wUklSSDlEQUFBQUFBQ0FBQUFCQUFBQUFZQUFBQWhGRUVBSVFJRFFDQUJJQUpCQW5SQkJISWlBMnI5QUFJQUlSTWdBeUFOYXYwQUFnQWhFaUFHSUFKQkEzUnFJZ01nRWYxYUFnQURJQU5CQ0dvZ0V5QVNJQkFnRXYwTkRBME9EeEFSRWhNVUZSWVhHQmthR3lJVC9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUVpRVAxYUFnQUFJQU5CRUdvZ0VQMWFBZ0FCSUFOQkdHb2dFUDFhQWdBQ0lBWWdGUDBNQVFBQUFBRUFBQUFCQUFBQUFRQUFBUDFRSWhYOUd3QkJBblJxSUJBZ0VTQVEvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJUi9Wb0NBQUFnQmlBVi9Sc0JRUUowYWlBUi9Wb0NBQUVnQmlBVi9Sc0NRUUowYWlBUi9Wb0NBQUlnQmlBVi9Sc0RRUUowYWlBUi9Wb0NBQU1nRlAwTUNBQUFBQWdBQUFBSUFBQUFDQUFBQVAydUFTRVVJQkFoRVNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJEOUd3TWhBaUFSL1JzRElRTWdCU0FNUmcwQklBSWhCQXNEUUNBQklBQkJBblFpQW1vb0FnQWhDU0FDSUExcUtBSUFJUUlnQmlBSVFRSjBhaUlGSUFNMkFnQWdCU0FESUFrZ0FpQUVha0VDYWtFQ2RXc2lBMnBCQVhVZ0JHbzJBZ1FnQ0VFQ2FpRUlJQUFnREVjZ0FpRUVJQUJCQVdvaEFBMEFDd3NnQmlBSVFRSjBhaUFETmdJQVFYd2hBQ0FIUVFGeEJIOGdCaUFIUVFGcklnQkJBblJxSUFFZ0FFRUJkR29vQWdBZ0FrRUJha0VCZFdzaUFEWUNBQ0FBSUFOcVFRRjFJUU5CZUFWQmZBc2dCaUFIUVFKMElnQnFhaUFDSUFOcU5nSUFJQUVnQmlBQUVCWWFEd3NDUUFKQUFrQWdCMEVCYXc0Q0FBRUNDeUFCSUFFb0FnQkJBbTAyQWdBUEN5QUFLQUlBSWdRZ0FTZ0NBQ0FCSUF0QkFuUnFJZ01vQWdCQkFXcEJBWFZySWdBMkFnUWdCQ0FBSUFNb0FnQnFOZ0lBSUFFZ0JDa0NBRGNDQUE4TElBZEJBMGdOQUNBQUtBSUFJZ29nQVNnQ0FDQUJJQXRCQW5ScUlnNG9BZ1FpQkNBT0tBSUFJZ0JxUVFKcVFRSjFheUlESUFCcU5nSUFRUUVoQ0FKQUlBZEJBbXNpQmlBSFFRRnhJZ3hGSWdCclFRSkpCRUFnQkNFQ0RBRUxJQWNnQUd0QkJHc2lBRUVCZGlJQ1FRRnFJUThDUUFKQUlBQkJGa2tOQUNBS1FRUnFJZ1VnQVNBQ1FRSjBJZ0JxUVFocVNTQUtJQUpCQTNScVFReHFJZ0lnQVVFRWFrdHhEUUFnQlNBQUlBRWdDMEVDZEdvaUFHcEJER3BKSUFCQkNHb2dBa2x4RFFBZ0QwRjhjU0lGUVFGeUlRQWdCVUVCZEVFQmNpRUlJQVQ5RVNFUklBUDlFU0VRUVFBaEFnTkFJQW9nQWtFRGRHb2lCQ0FCSUFKQkFuUWlBMnI5QUFJRUlCRWdBeUFPYXYwQUFnZ2lFZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlUSUJIOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBU0lTSUJJZ0VDQVMvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJVC9RMEVCUVlIR0JrYUd3Z0pDZ3NjSFI0Zi9Rc0NGQ0FFSUJBZ0UvME5EQTBPRHhBUkVoTUFBUUlERkJVV0Z5QVMvUTBBQVFJREJBVUdCeEFSRWhNTURRNFAvUXNDQkNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJIOUd3TWhBaUFRL1JzRElRTWdCU0FQUmcwQ0lBSWhCQXdCQzBFQklRQUxBMEFnQVNBQVFRSjBhaWdDQUNFTklBNGdBRUVCYWlJRlFRSjBhaWdDQUNFQ0lBb2dDRUVDZEdvaUNTQUROZ0lBSUFrZ0F5QU5JQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBOUhJQUloQkNBRklRQU5BQXNMSUFvZ0NFRUNkR29nQXpZQ0FBSkFJQXhGQkVBZ0NpQUdRUUowYWlBQklBZEJBWFJxUVFScktBSUFJQUpCQVdwQkFYVnJJZ0FnQTJwQkFYVWdBbW8yQWdBTUFRc2dBaUFEYWlFQUN5QUtJQWRCQW5RaUEycEJCR3NnQURZQ0FDQUJJQW9nQXhBV0dnc0xvQWNEQTMwRGV3Si9JQU5CQ0U4RVFDQURRUU4ySVFzRFFDQUIvUUFFQUNFSElBQWdBUDBBQkFBaUNDQUMvUUFFQUNJSi9ReThkTE0vdkhTelA3eDBzeis4ZExNLy9lWUIvZVFCL1FzRUFDQUJJQWdnQi8wTXp6R3dQczh4c0Q3UE1iQSt6ekd3UHYzbUFmM2xBU0FKL1F6aDBUWS80ZEUyUCtIUk5qL2gwVFkvL2VZQi9lVUIvUXNFQUNBQ0lBZ2dCLzBNNWREaVArWFE0ai9sME9JLzVkRGlQLzNtQWYza0FmMExCQUFnQWYwQUJCQWhCeUFBSUFEOUFBUVFJZ2dnQXYwQUJCQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQkFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJCQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRUUlBSkJJR29oQWlBQlFTQnFJUUVnQUVFZ2FpRUFJQXBCQVdvaUNpQUxSdzBBQ3dzQ1FDQURRUWR4SWdORkRRQWdBU29DQUNFRUlBQWdBaW9DQUNJR1E3eDBzeitVSUFBcUFnQWlCWkk0QWdBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlBSUFJZ0JTQUVRK1hRNGorVWtqZ0NBQ0FEUVFGR0RRQWdBU29DQkNFRUlBQWdBaW9DQkNJR1E3eDBzeitVSUFBcUFnUWlCWkk0QWdRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlFSUFJZ0JTQUVRK1hRNGorVWtqZ0NCQ0FEUVFKR0RRQWdBU29DQ0NFRUlBQWdBaW9DQ0NJR1E3eDBzeitVSUFBcUFnZ2lCWkk0QWdnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlJSUFJZ0JTQUVRK1hRNGorVWtqZ0NDQ0FEUVFOR0RRQWdBU29DRENFRUlBQWdBaW9DRENJR1E3eDBzeitVSUFBcUFnd2lCWkk0QWd3Z0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlNSUFJZ0JTQUVRK1hRNGorVWtqZ0NEQ0FEUVFSR0RRQWdBU29DRUNFRUlBQWdBaW9DRUNJR1E3eDBzeitVSUFBcUFoQWlCWkk0QWhBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlRSUFJZ0JTQUVRK1hRNGorVWtqZ0NFQ0FEUVFWR0RRQWdBU29DRkNFRUlBQWdBaW9DRkNJR1E3eDBzeitVSUFBcUFoUWlCWkk0QWhRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlVSUFJZ0JTQUVRK1hRNGorVWtqZ0NGQ0FEUVFaR0RRQWdBU29DR0NFRUlBQWdBaW9DR0NJR1E3eDBzeitVSUFBcUFoZ2lCWkk0QWhnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlZSUFJZ0JTQUVRK1hRNGorVWtqZ0NHQXNMNEFFQ0JuOERld0pBSUFORkRRQWdBMEVFVHdSQUlBTkJmSEVoQmdOQUlBQWdCRUVDZENJRmFpSUhJQWY5QUFJQUlBSWdCV29pQi8wQUFnQWlDeUFCSUFWcUlnWDlBQUlBSWd6OXJnRkJBdjJzQWYyeEFTSUtJQXY5cmdIOUN3SUFJQVVnQ3YwTEFnQWdCeUFLSUF6OXJnSDlDd0lBSUFSQkJHb2lCQ0FHUncwQUN5QURJQVpHRFFFTEEwQWdBQ0FHUVFKMElnUnFJZ1VnQlNnQ0FDQUNJQVJxSWdVb0FnQWlCeUFCSUFScUlnZ29BZ0FpQ1dwQkFuVnJJZ1FnQjJvMkFnQWdDQ0FFTmdJQUlBVWdCQ0FKYWpZQ0FDQUdRUUZxSWdZZ0EwY05BQXNMQzlrQkFRTi9Jd0JCZ0FGcklnWWtBQ0FHSVFVQ1FDQUJLQUlNSUFKQkJIUnFJZ0lvQWdBaUJFVUVRQ0FDSVFFTUFRc0RRQ0FGSUFJMkFnQWdCVUVFYWlFRklBUWlBU0lDS0FJQUlnUU5BQXNMUVFBaEJBTkFJQUVvQWdnaUFpQUVTQVJBSUFFZ0JEWUNDQ0FFSVFJTEFrQWdBaUFEVGcwQUEwQWdBaUFCS0FJRVRnMEJBa0FnQUVFQkVDTUVRQ0FCSUFJMkFnUU1BUXNnQWtFQmFpRUNDeUFDSUFOSURRQUxDeUFCSUFJMkFnZ2dCU0FHUndSQUlBVkJCR3NpQlNnQ0FDRUJJQUloQkF3QkN3c2dBU2dDQkNBR1FZQUJhaVFBSUFOSUM4UUpBZzkvQTNzakFFR0FBbXNpQ1NRQUFrQWdBRVVFUUVFQUlRQU1BUXNDUUNBQklBQW9BZ0JHQkVBZ0FDZ0NCQ0FDUmcwQkN5QUFJQUkyQWdRZ0FDQUJOZ0lBSUFrZ0FqWUNBQ0FKSUFFMkFvQUJJQUloQkNBQklRWURRQ0FKSUFnaUQwRUJhaUlJUVFKMElncHFJQVJCQVdwQkFtMGlCellDQUNBSlFZQUJhaUFLYWlBR1FRRnFRUUp0SWdvMkFnQWdCU0FFSUFac0lneHFJUVVnQnlFRUlBb2hCaUFNUVFGTERRQUxJQUFnQlRZQ0NBSkFBa0FDUUNBRlJRUkFJQUFvQWd3aUFVVU5BU0FCRUJRZ0FFRUFOZ0lNREFFTElBVkJCSFFpQlNBQUtBSVFUUTBDSUFBb0Fnd2dCUkFiSWdJTkFTQURRUUZCampKQkFCQVRJQUFvQWd3aUFVVU5BQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUkJBQ0VBREFNTElBQWdBallDRENBQ0lBQW9BaEFpQVdwQkFDQUZJQUZyRUJrYUlBQWdCVFlDRUNBQUtBSUVJUUlnQUNnQ0FDRUJDeUFBS0FJTUlRWWdEd1JBSUFZZ0FTQUNiRUVFZEdvaUJDRUZBMEFDUUNBSklCQkJBblFpQVdvb0FnQWlDMEVBVEEwQUlBdEJBV3NoRFFKQUFrQWdDVUdBQVdvZ0FXb29BZ0FpQjBFQVRBUkFJQXRCQVhFaENrRUFJUWdnQzBFQlJ3MEJJQVVoQVF3Q0N5QUhRUUlnQnlBSFFRSk9HMnRCQVdwQkFYWWlBaUFIUVlHQWdJQjRiRUgvLy8vL0IycEJBWFlpQVNBQklBSkxHeUlDUVFGcUlnRWdBVUVEY1NJQlFRUWdBUnRySWc1QkJIUWhFU0FPUVFWMElSSWdCeUFPUVFGMGF5RU1JQUpCQTBzZ0IzRWhDRUVBSVFFZ0JTRUNBMEFnQ0FSL0lBUWdFV29nQmlBU2FrRUFJUVVEUUNBRy9SRWlGUDBNQUFBQUFDQUFBQUJBQUFBQVlBQUFBUDJ1QVNJVi9Sc0FJQVQ5RWYwTUFBQUFBQkFBQUFBZ0FBQUFNQUFBQVAydUFTSVQvVm9DQUFBZ0ZmMGJBU0FUL1ZvQ0FBRWdGZjBiQWlBVC9Wb0NBQUlnRmYwYkF5QVQvVm9DQUFNZ0ZQME1FQUFBQURBQUFBQlFBQUFBY0FBQUFQMnVBU0lVL1JzQUlCUDlXZ0lBQUNBVS9Sc0JJQlA5V2dJQUFTQVUvUnNDSUJQOVdnSUFBaUFVL1JzRElCUDlXZ0lBQXlBRVFVQnJJUVFnQmtHQUFXb2hCaUFGUVFScUlnVWdEa2NOQUFzaEJpRUVJQXdGSUFjTElRVURRQUpBSUFZZ0JEWUNBQ0FGUVFGR0JFQWdCa0VRYWlFR0lBUkJFR29oQkF3QkN5QUdJQVEyQWhBZ0JFRVFhaUVFSUFaQklHb2hCaUFGUVFKS0lBVkJBbXNoQlEwQkN3c2dCQ0FDSUFkQkJIUnFJQUVnQVNBTlJuSkJBWEVpQXhzaEJTQUVJQUlnQXhzaEJDQUZJUUlnQVVFQmFpSUJJQXRIRFFBTERBSUxJQXRCL3YvLy93ZHhJUU5CQUNFQ0EwQWdDQ0FOUmlFQklBaEJBbW9oQ0NBRUlBVWdBUnNpQkNFRklBUWhBU0FDUVFKcUlnSWdBMGNOQUFzTElBcEZCRUFnQkNFRkRBRUxJQVFnQVNBSFFRUjBhaUFJSUFnZ0RVWnlRUUZ4SWdJYklRVWdCQ0FCSUFJYklRUUxJQkJCQVdvaUVDQVBSdzBBQ3dzZ0JrRUFOZ0lBQ3lBQUtBSUlJZ0pGRFFBZ0FDZ0NEQ0VFSUFKQkJFOEVRQ0FDUVh4eElRRkJBQ0VHQTBBZ0JFRUFOZ0k4SUFSQzV3YzNBalFnQkVFQU5nSXNJQVJDNXdjM0FpUWdCRUVBTmdJY0lBUkM1d2MzQWhRZ0JFRUFOZ0lNSUFSQzV3YzNBZ1FnQkVGQWF5RUVJQVpCQkdvaUJpQUJSdzBBQ3dzZ0FrRURjU0lCUlEwQVFRQWhCZ05BSUFSQkFEWUNEQ0FFUXVjSE53SUVJQVJCRUdvaEJDQUdRUUZxSWdZZ0FVY05BQXNMSUFsQmdBSnFKQUFnQUF1eEFRRURmd0pBSUFCRkRRQWdBQ2dDQ0NJQlJRMEFJQUFvQWd3aEFDQUJRUVJQQkVBZ0FVRjhjU0VEQTBBZ0FFRUFOZ0k4SUFCQzV3YzNBalFnQUVFQU5nSXNJQUJDNXdjM0FpUWdBRUVBTmdJY0lBQkM1d2MzQWhRZ0FFRUFOZ0lNSUFCQzV3YzNBZ1FnQUVGQWF5RUFJQUpCQkdvaUFpQURSdzBBQ3dzZ0FVRURjU0lCUlEwQVFRQWhBZ05BSUFCQkFEWUNEQ0FBUXVjSE53SUVJQUJCRUdvaEFDQUNRUUZxSWdJZ0FVY05BQXNMQzhrSUFoSi9BM3NqQUVHQUFtc2lDU1FBQW45QkFVRVVFQmNpQjBVRVFDQUNRUUZCNkRGQkFCQVRRUUFNQVFzZ0J5QUJOZ0lFSUFjZ0FEWUNBQ0FKSUFFMkFnQWdDU0FBTmdLQUFRTkFJQWtnQmlJUFFRRnFJZ1pCQW5RaUJXb2dBVUVCYWtFQ2JTSUROZ0lBSUFsQmdBRnFJQVZxSUFCQkFXcEJBbTBpQlRZQ0FDQUVJQUFnQVd3aUNHb2hCQ0FESVFFZ0JTRUFJQWhCQVVzTkFBc2dCeUFFTmdJSUlBUkZCRUFnQnhBVVFRQU1BUXNnQnlBRVFSQVFGeUlETmdJTUlBTkZCRUFnQWtFQlFjY2JRUUFRRXlBSEVCUkJBQXdCQ3lBSElBY29BZ2dpREVFRWREWUNFQ0FESVFFZ0R3UkFJQU1nQnlnQ0JDQUhLQUlBYkVFRWRHb2lBQ0VHQTBBQ1FDQUpJQkJCQW5RaUFtb29BZ0FpQzBFQVRBMEFJQXRCQVdzaERRSkFJQWxCZ0FGcUlBSnFLQUlBSWdoQkFFd0VRRUVBSVFRZ0MwRUJSd1JBSUF0Qi92Ly8vd2R4SVFWQkFDRUNBMEFnQkNBTlJpRUtJQVJCQW1vaEJDQUdJQUFnQ2hzaUFDRUdJQUpCQW1vaUFpQUZSdzBBQ3dzZ0MwRUJjUTBCSUFBaEJnd0NDeUFJUVFJZ0NDQUlRUUpPRzJ0QkFXcEJBWFlpQWlBSVFZR0FnSUI0YkVILy8vLy9CMnBCQVhZaUJTQUNJQVZKR3lJQ1FRRnFJZ1VnQlVFRGNTSUZRUVFnQlJ0cklnNUJCWFFoRVNBT1FRUjBJUklnQ0NBT1FRRjBheUVUSUFKQkEwc2dDSEVoRkVFQUlRb2dBQ0VDQTBBQ2Z5QVVSUVJBSUFZaEFDQUlEQUVMSUFFZ0VXb2dCaUFTYWlFQVFRQWhCQU5BSUFIOUVTSVgvUXdBQUFBQUlBQUFBRUFBQUFCZ0FBQUEvYTRCSWhYOUd3QWdCdjBSL1F3QUFBQUFFQUFBQUNBQUFBQXdBQUFBL2E0QkloYjlXZ0lBQUNBVi9Sc0JJQmI5V2dJQUFTQVYvUnNDSUJiOVdnSUFBaUFWL1JzRElCYjlXZ0lBQXlBWC9Rd1FBQUFBTUFBQUFGQUFBQUJ3QUFBQS9hNEJJaFg5R3dBZ0Z2MWFBZ0FBSUJYOUd3RWdGdjFhQWdBQklCWDlHd0lnRnYxYUFnQUNJQlg5R3dNZ0Z2MWFBZ0FESUFGQmdBRnFJUUVnQmtGQWF5RUdJQVJCQkdvaUJDQU9SdzBBQ3lFQklCTUxJUVFEUUFKQUlBRWdBRFlDQUNBRVFRRkdCRUFnQVVFUWFpRUJJQUJCRUdvaEFBd0JDeUFCSUFBMkFoQWdBRUVRYWlFQUlBRkJJR29oQVNBRVFRSktJQVJCQW1zaEJBMEJDd3NnQUNBQ0lBb2dDaUFOUm5KQkFYRWlCUnNoQmlBQUlBSWdDRUVFZEdvZ0JSc2lBQ0VDSUFwQkFXb2lDaUFMUncwQUN3d0JDeUFHSUFBZ0NFRUVkR29nQkNBRUlBMUdja0VCY1NJRkd5QUdJQUFnQlJzaEJpRUFDeUFRUVFGcUloQWdEMGNOQUFzTElBRkJBRFlDQUFKQUlBeEZEUUFnREVFRVR3UkFJQXhCZkhFaEFFRUFJUUVEUUNBRFFRQTJBandnQTBMbkJ6Y0NOQ0FEUVFBMkFpd2dBMExuQnpjQ0pDQURRUUEyQWh3Z0EwTG5CemNDRkNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVVCcklRTWdBVUVFYWlJQklBQkhEUUFMQ3lBTVFRTnhJZ0JGRFFCQkFDRUJBMEFnQTBFQU5nSU1JQU5DNXdjM0FnUWdBMEVRYWlFRElBRkJBV29pQVNBQVJ3MEFDd3NnQndzZ0NVR0FBbW9rQUF0VEFRRi9BbjhnQUMwQURFSC9BVVlFUUNBQVFvRCtnNER3QURjQ0RFRUFJQUFvQWdnaUFTQUFLQUlFVHcwQkdpQUFJQUZCQVdvMkFnZ2dBQ0FCTFFBQVFZRCtBM0kyQWd3TElBQkJBRFlDRUVFQkN3c0ZBQkFNQUF1QkFnQUNRQ0FCUWY4QVRRMEFBa0JCMU5ZQktBSUFLQUlBUlFSQUlBRkJnSDl4UVlDL0EwWU5BZ3dCQ3lBQlFmOFBUUVJBSUFBZ0FVRS9jVUdBQVhJNkFBRWdBQ0FCUVFaMlFjQUJjam9BQUVFQ0R3c2dBVUdBUUhGQmdNQURSeUFCUVlDd0EwOXhSUVJBSUFBZ0FVRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFlQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FCUVFNUEN5QUJRWUNBQkd0Qi8vOC9UUVJBSUFBZ0FVRS9jVUdBQVhJNkFBTWdBQ0FCUVJKMlFmQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0UvY1VHQUFYSTZBQUZCQkE4TEMwSFV6UUZCR1RZQ0FFRi9Ed3NnQUNBQk9nQUFRUUVMZmdJQmZ3RitJQUM5SWdOQ05JaW5RZjhQY1NJQ1FmOFBSd1I4SUFKRkJFQWdBU0FBUkFBQUFBQUFBQUFBWVFSL1FRQUZJQUJFQUFBQUFBQUE4RU9pSUFFUWNDRUFJQUVvQWdCQlFHb0xOZ0lBSUFBUEN5QUJJQUpCL2dkck5nSUFJQU5DLy8vLy8vLy8vNGVBZjROQ2dJQ0FnSUNBZ1BBL2hMOEZJQUFMQzd3Q0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFSmF3NFNBQWdKQ2dnSkFRSURCQW9KQ2dvSUNRVUdCd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCS0FJQU5nSUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkF3QUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUMyOEJCWDhnQUNnQ0FDSURMQUFBUVRCcklnRkJDVXNFUUVFQUR3c0RRRUYvSVFRZ0FrSE1tYlBtQUUwRVFFRi9JQUVnQWtFS2JDSUZhaUFCSUFWQi8vLy8vd2R6U3hzaEJBc2dBQ0FEUVFGcUlnVTJBZ0FnQXl3QUFTQUVJUUlnQlNFRFFUQnJJZ0ZCQ2trTkFBc2dBZ3RKQVFGL0FrQkJBVUVzRUJjaUFRUkFJQUZCQURZQ0VBSkFJQUJCQUV3RVFDQUJRUUZCQ0JBWElnQTJBaVFnQUVVTkFRd0RDeUFCUVFBMkFnd0xJQUVRRkF0QkFDRUJDeUFCQzY0VUFoSi9BbjRqQUVGQWFpSUlKQUFnQ0NBQk5nSThJQWhCSjJvaEZ5QUlRU2hxSVJJQ1FBSkFBa0FDUUFOQVFRQWhCd05BSUFFaERTQUhJQTVCLy8vLy93ZHpTZzBDSUFjZ0Rtb2hEZ0pBQWtBQ1FBSkFJQUVpQnkwQUFDSU1CRUFEUUFKQUFrQWdERUgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hEQU5BSUF3dEFBRkJKVWNFUUNBTUlRRU1BZ3NnQjBFQmFpRUhJQXd0QUFJZ0RFRUNhaUlCSVF4QkpVWU5BQXNMSUFjZ0RXc2lCeUFPUWYvLy8vOEhjeUlZU2cwSklBQUVRQ0FBSUEwZ0J4QWVDeUFIRFFjZ0NDQUJOZ0k4SUFGQkFXb2hCMEYvSVJFQ1FDQUJMQUFCUVRCcklndEJDVXNOQUNBQkxRQUNRU1JIRFFBZ0FVRURhaUVIUVFFaEV5QUxJUkVMSUFnZ0J6WUNQRUVBSVFrQ1FDQUhMQUFBSWd4QklHc2lBVUVmU3dSQUlBY2hDd3dCQ3lBSElRdEJBU0FCZENJQlFZblJCSEZGRFFBRFFDQUlJQWRCQVdvaUN6WUNQQ0FCSUFseUlRa2dCeXdBQVNJTVFTQnJJZ0ZCSUU4TkFTQUxJUWRCQVNBQmRDSUJRWW5SQkhFTkFBc0xBa0FnREVFcVJnUkFBbjhDUUNBTExBQUJRVEJySWdGQkNVc05BQ0FMTFFBQ1FTUkhEUUFDZnlBQVJRUkFJQVFnQVVFQ2RHcEJDallDQUVFQURBRUxJQU1nQVVFRGRHb29BZ0FMSVJBZ0MwRURhaUVCUVFFTUFRc2dFdzBHSUF0QkFXb2hBU0FBUlFSQUlBZ2dBVFlDUEVFQUlSTkJBQ0VRREFNTElBSWdBaWdDQUNJSFFRUnFOZ0lBSUFjb0FnQWhFRUVBQ3lFVElBZ2dBVFlDUENBUVFRQk9EUUZCQUNBUWF5RVFJQWxCZ01BQWNpRUpEQUVMSUFoQlBHb1FjaUlRUVFCSURRb2dDQ2dDUENFQkMwRUFJUWRCZnlFS0FuOUJBQ0FCTFFBQVFTNUhEUUFhSUFFdEFBRkJLa1lFUUFKL0FrQWdBU3dBQWtFd2F5SUxRUWxMRFFBZ0FTMEFBMEVrUncwQUlBRkJCR29oQVFKL0lBQkZCRUFnQkNBTFFRSjBha0VLTmdJQVFRQU1BUXNnQXlBTFFRTjBhaWdDQUFzTUFRc2dFdzBHSUFGQkFtb2hBVUVBSUFCRkRRQWFJQUlnQWlnQ0FDSUxRUVJxTmdJQUlBc29BZ0FMSVFvZ0NDQUJOZ0k4SUFwQkFFNE1BUXNnQ0NBQlFRRnFOZ0k4SUFoQlBHb1FjaUVLSUFnb0Fqd2hBVUVCQ3lFVUEwQWdCeUVWUVJ3aEN5QUJJZzhzQUFBaUIwSDdBR3RCUmtrTkN5QUJRUUZxSVFFZ0J5QVZRVHBzYWtIL3hBRnFMUUFBSWdkQkFXdEIvd0Z4UVFoSkRRQUxJQWdnQVRZQ1BBSkFJQWRCRzBjRVFDQUhSUTBNSUJGQkFFNEVRQ0FBUlFSQUlBUWdFVUVDZEdvZ0J6WUNBQXdNQ3lBSUlBTWdFVUVEZEdvcEF3QTNBekFNQWdzZ0FFVU5DQ0FJUVRCcUlBY2dBaUFHRUhFTUFRc2dFVUVBVGcwTFFRQWhCeUFBUlEwSUN5QUFMUUFBUVNCeERRc2dDVUgvLzN0eElnd2dDU0FKUVlEQUFIRWJJUWxCQUNFUlFiQUlJUllnRWlFTEFrQUNRQUovQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBUExRQUFJZ2ZBSWc5QlUzRWdEeUFIUVE5eFFRTkdHeUFQSUJVYklnZEIyQUJyRGlFRUZoWVdGaFlXRmhZUUZna0dFQkFRRmdZV0ZoWVdBZ1VERmhZS0ZnRVdGZ1FBQ3dKQUlBZEJ3UUJyRGdjUUZnc1dFQkFRQUFzZ0IwSFRBRVlOQ3d3VkN5QUlLUU13SVJwQnNBZ01CUXRCQUNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FnRlE0SUFBRUNBd1FjQlFZY0N5QUlLQUl3SUE0MkFnQU1Hd3NnQ0NnQ01DQU9OZ0lBREJvTElBZ29BakFnRHF3M0F3QU1HUXNnQ0NnQ01DQU9Pd0VBREJnTElBZ29BakFnRGpvQUFBd1hDeUFJS0FJd0lBNDJBZ0FNRmdzZ0NDZ0NNQ0FPckRjREFBd1ZDMEVJSUFvZ0NrRUlUUnNoQ2lBSlFRaHlJUWxCK0FBaEJ3c2dFaUVCSUFncEF6QWlHaUlaUWdCU0JFQWdCMEVnY1NFTUEwQWdBVUVCYXlJQklCbW5RUTl4UVpESkFXb3RBQUFnREhJNkFBQWdHVUlQVmlBWlFnU0lJUmtOQUFzTElBRWhEU0FhVUEwRElBbEJDSEZGRFFNZ0IwRUVka0d3Q0dvaEZrRUNJUkVNQXdzZ0VpRUJJQWdwQXpBaUdpSVpRZ0JTQkVBRFFDQUJRUUZySWdFZ0dhZEJCM0ZCTUhJNkFBQWdHVUlIVmlBWlFnT0lJUmtOQUFzTElBRWhEU0FKUVFoeFJRMENJQW9nRWlBQmF5SUJRUUZxSUFFZ0NrZ2JJUW9NQWdzZ0NDa0RNQ0lhUWdCVEJFQWdDRUlBSUJwOUlobzNBekJCQVNFUlFiQUlEQUVMSUFsQmdCQnhCRUJCQVNFUlFiRUlEQUVMUWJJSVFiQUlJQWxCQVhFaUVSc0xJUllnR2lBU0VDOGhEUXNnRkNBS1FRQkljUTBSSUFsQi8vOTdjU0FKSUJRYklRa0NRQ0FhUWdCU0RRQWdDZzBBSUJJaERVRUFJUW9NRGdzZ0NpQWFVQ0FTSUExcmFpSUJJQUVnQ2tnYklRb01EUXNnQ0MwQU1DRUhEQXNMQW45Qi8vLy8vd2NnQ2lBS1FmLy8vLzhIVHhzaUJ5SUpRUUJISVFzQ1FBSkFBa0FnQ0NnQ01DSUJRZkVNSUFFYklnMGlEMEVEY1VVTkFDQUpSUTBBQTBBZ0R5MEFBRVVOQWlBSlFRRnJJZ2xCQUVjaEN5QVBRUUZxSWc5QkEzRkZEUUVnQ1EwQUN3c2dDMFVOQVFKQUlBOHRBQUJGRFFBZ0NVRUVTUTBBQTBCQmdJS0VDQ0FQS0FJQUlnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BaUFQUVFScUlROGdDVUVFYXlJSlFRTkxEUUFMQ3lBSlJRMEJDd05BSUE4Z0R5MEFBRVVOQWhvZ0QwRUJhaUVQSUFsQkFXc2lDUTBBQ3d0QkFBc2lBU0FOYXlBSElBRWJJZ0VnRFdvaEN5QUtRUUJPQkVBZ0RDRUpJQUVoQ2d3TUN5QU1JUWtnQVNFS0lBc3RBQUFORHd3TEN5QUlLUU13SWhsQ0FGSU5BVUVBSVFjTUNRc2dDZ1JBSUFnb0FqQU1BZ3RCQUNFSElBQkJJQ0FRUVFBZ0NSQWdEQUlMSUFoQkFEWUNEQ0FJSUJrK0FnZ2dDQ0FJUVFocUlnYzJBakJCZnlFS0lBY0xJUXhCQUNFSEEwQUNRQ0FNS0FJQUlnMUZEUUFnQ0VFRWFpQU5FRzhpRFVFQVNBMFBJQTBnQ2lBSGEwc05BQ0FNUVFScUlRd2dCeUFOYWlJSElBcEpEUUVMQzBFOUlRc2dCMEVBU0EwTUlBQkJJQ0FRSUFjZ0NSQWdJQWRGQkVCQkFDRUhEQUVMUVFBaEN5QUlLQUl3SVF3RFFDQU1LQUlBSWcxRkRRRWdDRUVFYWlJS0lBMFFieUlOSUF0cUlnc2dCMHNOQVNBQUlBb2dEUkFlSUF4QkJHb2hEQ0FISUF0TERRQUxDeUFBUVNBZ0VDQUhJQWxCZ01BQWN4QWdJQkFnQnlBSElCQklHeUVIREFnTElCUWdDa0VBU0hFTkNVRTlJUXNnQUNBSUt3TXdJQkFnQ2lBSklBY2dCUkVWQUNJSFFRQk9EUWNNQ2dzZ0J5MEFBU0VNSUFkQkFXb2hCd3dBQ3dBTElBQU5DU0FUUlEwRFFRRWhCd05BSUFRZ0IwRUNkR29vQWdBaUFBUkFJQU1nQjBFRGRHb2dBQ0FDSUFZUWNVRUJJUTRnQjBFQmFpSUhRUXBIRFFFTUN3c0xJQWRCQ2s4RVFFRUJJUTRNQ2dzRFFDQUVJQWRCQW5ScUtBSUFEUUZCQVNFT0lBZEJBV29pQjBFS1J3MEFDd3dKQzBFY0lRc01CZ3NnQ0NBSE9nQW5RUUVoQ2lBWElRMGdEQ0VKQ3lBS0lBc2dEV3NpRENBS0lBeEtHeUlCSUJGQi8vLy8vd2R6U2cwRFFUMGhDeUFRSUFFZ0VXb2lDaUFLSUJCSUd5SUhJQmhLRFFRZ0FFRWdJQWNnQ2lBSkVDQWdBQ0FXSUJFUUhpQUFRVEFnQnlBS0lBbEJnSUFFY3hBZ0lBQkJNQ0FCSUF4QkFCQWdJQUFnRFNBTUVCNGdBRUVnSUFjZ0NpQUpRWURBQUhNUUlDQUlLQUk4SVFFTUFRc0xDMEVBSVE0TUF3dEJQU0VMQzBIVXpRRWdDellDQUF0QmZ5RU9DeUFJUVVCckpBQWdEZ3VrQWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFTQUZRYUFCYWlJQ1FRQkJLQkFaR2lBRklBVW9Bc3dCTmdMSUFRSkFRUUFnQVNBRlFjZ0JhaUFGUWRBQWFpQUNJQU1nQkJCMFFRQklEUUFnQUNnQ1RFRUFTQ0FBSUFBb0FnQWlCMEZmY1RZQ0FBSi9Ba0FDUUNBQUtBSXdSUVJBSUFCQjBBQTJBakFnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlzSVFZZ0FDQUZOZ0lzREFFTElBQW9BaEFOQVF0QmZ5QUFFRWNOQVJvTElBQWdBU0FGUWNnQmFpQUZRZEFBYWlBRlFhQUJhaUFESUFRUWRBc2hBU0FHQkg4Z0FFRUFRUUFnQUNnQ0pCRUFBQm9nQUVFQU5nSXdJQUFnQmpZQ0xDQUFRUUEyQWh3Z0FDZ0NGQm9nQUVJQU53TVFRUUFGSUFFTEdpQUFJQUFvQWdBZ0IwRWdjWEkyQWdBTkFBc2dCVUhRQVdva0FBdVZBUUVHZjBFSUlRSWpBRUdBQW1zaUJTUUFJQUZCQWs0RVFDQUFJQUZCQW5ScUlnY2dCVFlDQUFOQUlBY29BZ0FnQUNnQ0FFR0FBaUFDSUFKQmdBSlBHeUlFRUJZYVFRQWhBd05BSUFBZ0EwRUNkR29pQmlnQ0FDQUFJQU5CQVdvaUEwRUNkR29vQWdBZ0JCQVdHaUFHSUFZb0FnQWdCR28yQWdBZ0FTQURSdzBBQ3lBQ0lBUnJJZ0lOQUFzTElBVkJnQUpxSkFBTEtRQWdBRUVCYXlJQWFFRUFJQUFiSWdBRWZ5QUFCU0FCYUVFQUlBRWJJZ0JCSUhKQkFDQUFHd3NMblFNQkNYOENRQ0FBSWdGQkEzRUVRQU5BSUFFdEFBQWlBa1VOQWlBQ1FUMUdEUUlnQVVFQmFpSUJRUU54RFFBTEN3SkFBa0JCZ0lLRUNDQUJLQUlBSWdOcklBTnlRWUNCZ29SNGNVR0FnWUtFZUVjTkFBTkFRWUNDaEFnZ0EwRzkrdlRwQTNNaUFtc2dBbkpCZ0lHQ2hIaHhRWUNCZ29SNFJ3MEJJQUVvQWdRaEF5QUJRUVJxSWdJaEFTQURRWUNDaEFnZ0EydHlRWUNCZ29SNGNVR0FnWUtFZUVZTkFBc01BUXNnQVNFQ0N3TkFJQUlpQVMwQUFDSURSUTBCSUFGQkFXb2hBaUFEUVQxSERRQUxDeUFBSUFGR0JFQkJBQThMQWtBZ0FDQUJJQUJySWdacUxRQUFEUUJCOE5VQktBSUFJZ1ZGRFFBZ0JTZ0NBQ0lCUlEwQUEwQUNRQUovSUFBaEF5QUJJUUpCQUNBR0lnZEZEUUFhSUFNdEFBQWlCQVIvQWtBRFFDQUVJQUl0QUFBaUNFY05BU0FJUlEwQklBZEJBV3NpQjBVTkFTQUNRUUZxSVFJZ0F5MEFBU0VFSUFOQkFXb2hBeUFFRFFBTFFRQWhCQXNnQkFWQkFBc2dBaTBBQUdzTFJRUkFJQUVnQm1vaUFTMEFBRUU5UmcwQkN5QUZLQUlFSVFFZ0JVRUVhaUVGSUFFTkFRd0NDd3NnQVVFQmFpRUpDeUFKQ3ljQkFYOUJIQ0VESUFGQkEzRUVmMEVjQlNBQUlBRWdBaEFwSWdBMkFnQkJBRUV3SUFBYkN3djlBd0VGZndKL1FhakxBU2dDQUNJQ0lBQkJCMnBCZUhFaUFVRUhha0Y0Y1NJRGFpRUFBa0FnQTBFQUlBQWdBazBiUlFSQUlBQS9BRUVRZEUwTkFTQUFFQTROQVF0QjFNMEJRVEEyQWdCQmZ3d0JDMEdveXdFZ0FEWUNBQ0FDQ3lJQ1FYOUhCRUFnQVNBQ2FpSUFRUVJyUVJBMkFnQWdBRUVRYXlJRFFSQTJBZ0FDUUFKL1FlRFZBU2dDQUNJQkJIOGdBU2dDQ0FWQkFBc2dBa1lFUUNBQ0lBSkJCR3NvQWdCQmZuRnJJZ1JCQkdzb0FnQWhCU0FCSUFBMkFnZ2dCQ0FGUVg1eGF5SUFJQUFvQWdCcVFRUnJMUUFBUVFGeEJFQWdBQ2dDQkNJQklBQW9BZ2dpQkRZQ0NDQUVJQUUyQWdRZ0FDQURJQUJySWdFMkFnQU1Bd3NnQWtFUWF3d0JDeUFDUVJBMkFnQWdBaUFBTmdJSUlBSWdBVFlDQkNBQ1FSQTJBZ3hCNE5VQklBSTJBZ0FnQWtFUWFnc2lBQ0FESUFCcklnRTJBZ0FMSUFBZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBQUFuOGdBQ2dDQUVFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBVUVkSUFGbklnTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlCSUFGQlAwOGJDeUlCUVFSMElnTkI0TTBCYWpZQ0JDQUFJQU5CNk0wQmFpSURLQUlBTmdJSUlBTWdBRFlDQUNBQUtBSUlJQUEyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxJQUpCZjBjTHZRRUJBbjhDUUNBQUtBSk1JZ0ZCQUU0RVFDQUJSUTBCUVl6V0FTZ0NBQ0FCUWYvLy8vOERjVWNOQVFzQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQklBQW9BaEJHRFFBZ0FDQUJRUUZxTmdJVUlBRkJDam9BQUE4TElBQVFmQThMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQWtBQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQ0lBQW9BaEJHRFFBZ0FDQUNRUUZxTmdJVUlBSkJDam9BQUF3QkN5QUFFSHdMSUFFb0FnQWFJQUZCQURZQ0FBdDhBUUovSXdCQkVHc2lBU1FBSUFGQkNqb0FEd0pBQWtBZ0FDZ0NFQ0lDQkg4Z0FnVWdBQkJIRFFJZ0FDZ0NFQXNnQUNnQ0ZDSUNSZzBBSUFBb0FsQkJDa1lOQUNBQUlBSkJBV28yQWhRZ0FrRUtPZ0FBREFFTElBQWdBVUVQYWtFQklBQW9BaVFSQUFCQkFVY05BQ0FCTFFBUEdnc2dBVUVRYWlRQUM3QUNBUUovSUFBRVFDQUFLQUlBRUVBZ0FFRUFOZ0lBSUFBb0FrZ2lBUVJBSUFFUUZDQUFRUUEyQWtnTElBQW9Ba1FpQVFSQUlBRVFGQ0FBUVFBMkFrUUxJQUFvQW13aUFRUkFJQUVRRkNBQVFRQTJBbXdMSUFBb0FuUWlBUVJBSUFFb0FnQWlBZ1JBSUFJUUZDQUFLQUowSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDZEFzZ0FDZ0NlQ0lCQkVBZ0FTZ0NEQ0lDQkVBZ0FoQVVJQUFvQW5naUFVRUFOZ0lNQ3lBQktBSUVJZ0lFUUNBQ0VCUWdBQ2dDZUNJQlFRQTJBZ1FMSUFFb0FnZ2lBZ1JBSUFJUUZDQUFLQUo0SWdGQkFEWUNDQXNnQVNnQ0FDSUNCRUFnQWhBVUlBQW9BbmdpQVVFQU5nSUFDeUFCRUJRZ0FFRUFOZ0o0Q3lBQUtBSUVJZ0VFUUNBQkVEZ2dBRUVBTmdJRUN5QUFLQUlJSWdFRVFDQUJFRGdnQUVFQU5nSUlDeUFBRUJRTEM0c2FBaDUvQlhzakFFSHdBV3NpQ0NRQVFRRWhEZ0pBSUFBb0FnQW9BandOQUNBQUtBS0FBUTBBQWtBQ1FDQUFLQUowSWdsRkJFQWdBQ2dDZUNFRkRBRUxJQUVvQWhBaEJpQUpMd0VFSVFRQ1FDQUFLQUo0SWdWRkRRQWdCU2dDREVVTkFDQUZMUUFTSVFZTEFrQWdCQVJBSUFrb0FnQWhDUU5BSUFrZ0EwRUdiR29pQ2k4QkFDSUhJQVpQQkVBZ0NDQUdOZ0swQVNBSUlBYzJBckFCSUFKQkFVSHU2Z0FnQ0VHd0FXb1FFMEVBSVE0TUJnc0NRQ0FLTHdFRUlncEZEUUFnQ2tILy93TkdEUUFnQ2tFQmF5SUtJQVpKRFFBZ0NDQUdOZ0trQVNBSUlBbzJBcUFCSUFKQkFVSHU2Z0FnQ0VHZ0FXb1FFMEVBSVE0TUJnc2dBMEVCYWlJRElBUkhEUUFMREFFTElBWU5BZ3dCQ3dOQUlBWkJBV3NoQmtFQUlRTURRQ0FKSUFOQkJteHFMd0VBSUFaSEJFQWdBMEVCYWlJRElBUkhEUUVNQkFzTElBWU5BQXNMQWtBZ0JVVU5BQ0FGS0FJTUlncEZEUUFDUUFKQUlBVXRBQklpQlFSQVFRQWhBMEVCSVFjRFFDQUJLQUlRSWdRZ0NpQURRUUowYWk4QkFDSUdUUVJBSUFnZ0JEWUNsQUVnQ0NBR05nS1FBU0FDUVFGQjd1b0FJQWhCa0FGcUVCTkJBQ0VIQ3lBRFFRRnFJZ01nQlVjTkFBc2dCVUVFRUJjaUJFVU5BVUVBSVFNRFFBSkFJQW9nQTBFQ2RHb2lCaTBBQWlJSlFRSlBCRUFnQ0NBSk5nSkVJQWdnQXpZQ1FDQUNRUUZCbWQ0QUlBaEJRR3NRRTBFQUlRY01BUXNnQlNBR0xRQURJZ1pOQkVBZ0NDQUdOZ0tBQVNBQ1FRRkI0ZDBBSUFoQmdBRnFFQk5CQUNFSERBRUxJQVFnQmtFQ2RHb2hDd0pBSUFsQkFVY2lEQTBBSUFzb0FnQkZEUUFnQ0NBR05nSlFJQUpCQVVIaTJRQWdDRUhRQUdvUUUwRUFJUWNNQVFzQ1FDQUpEUUFnQmtVTkFDQUlJQVkyQW1RZ0NDQUROZ0pnSUFKQkFVSFkzQUFnQ0VIZ0FHb1FFMEVBSVFjTUFRc0NRQ0FNRFFBZ0F5QUdSZzBBSUFnZ0JqWUNlQ0FJSUFNMkFuUWdDQ0FETmdKd0lBSkJBVUg4M0FBZ0NFSHdBR29RRTBFQUlRY01BUXNnQzBFQk5nSUFDeUFEUVFGcUlnTWdCVWNOQUFzZ0IwVWhCMEVBSVFNRFFBSkFBa0FnQkNBRFFRSjBJZ1pxS0FJQVJRUkFJQVlnQ21vdEFBSU5BUXNnQTBFQmFpSURJQVZIRFFJZ0IwRUJjUTBCSUFFb0FoQkJBVWNOQlVFQUlRTURRQ0FFSUFOQkFuUnFLQUlBQkVBZ0JTQURRUUZxSWdOSERRRU1Cd3NMUVFBaENTQUNRUUpCZ01nQVFRQVFFMEVBSVFNZ0JVRUVUd1JBSUFWQi9BRnhJUWRCQUNFR0EwQWdDaUFEUVFKMGFpSUxJQU02QUFNZ0MwRUJPZ0FDSUFvZ0EwRUJjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRUNjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRURjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFOQkJHb2hBeUFHUVFScUlnWWdCMGNOQUFzTElBVkJBM0VpQlVVTkJRTkFJQW9nQTBFQ2RHb2lCaUFET2dBRElBWkJBVG9BQWlBRFFRRnFJUU1nQ1VFQmFpSUpJQVZIRFFBTERBVUxJQWdnQXpZQ01FRUJJUWNnQWtFQlFialdBQ0FJUVRCcUVCTWdBMEVCYWlJRElBVkhEUUVMQ3lBRUVCUkJBQ0VPREFVTElBVkJCQkFYSWdRTkFRdEJBQ0VPSUFKQkFVSFkzd0JCQUJBVERBTUxJQVFRRkFzQ1FDQUFLQUo0SWdWRkRRQWdCU2dDRENJUFJRUkFJQVVvQWdRUUZDQUFLQUo0S0FJSUVCUWdBQ2dDZUNnQ0FCQVVJQUFvQW5naUJTZ0NEQ0lFQkg4Z0JCQVVJQUFvQW5nRklBVUxFQlFnQUVFQU5nSjREQUVMSUFFb0FoZ2hEUUpBQWtBZ0JTMEFFaUlMQkVBZ0JTZ0NBQ0VVSUFVb0FnUWhCaUFGS0FJSUlRcEJBQ0VEQWtBRFFDQU5JQThnQTBFQ2RHb3ZBUUJCTkd4cUtBSXNCRUFnQ3lBRFFRRnFJZ05IRFFFTUFnc0xJQWdnQXpZQ0lDQUNRUUZCa093QUlBaEJJR29RRTBFQUlRNE1CZ3NnQzBFMGJCQVlJZ2xGRFFGQkFDRURBMEFnRHlBRFFRSjBhaUlGTHdFQUlRY2dDU0FGTFFBQ0JIOGdCUzBBQXdVZ0F3dEJOR3hxSWdRZ0RTQUhRVFJzYWlJRi9RQUNBUDBMQWdBZ0JDQUZLQUl3TmdJd0lBUWdCZjBBQWlEOUN3SWdJQVFnQmYwQUFoRDlDd0lRSUFrZ0EwRTBiR29pQkNBRktBSUlJQVVvQWd4c1FRSjBFQndpQlRZQ0xDQUZSUVJBSUFNRVFDQURRZi8vQTNFaEFBTkFJQUJCTkd3Z0NXcEJDR3NvQWdBUUZDQUFRUUZySWdBTkFBc0xJQWtRRkVFQUlRNGdBa0VCUWR6ckFFRUFFQk1NQndzZ0JDQURJQXBxTFFBQU5nSVlJQVFnQXlBR2FpMEFBRFlDSUNBRFFRRnFJZ01nQzBjTkFBc2dBQ2dDZUM4QkVDSVFRUUZySVJJRFFDQUpJQk5CTkd4cUlnVW9BZ3dnQlNnQ0NHd2hCQ0FOSUE4Z0UwRUNkR29pQmk4QkFFRTBiR29vQWl3aENnSkFJQVl0QUFKRkJFQWdCRVVOQVNBRktBSXNJUU5CQUNFSFFRQWhCUUpBSUFSQkJFa05BQ0FESUFwclFSQkpEUUFnQkVGOGNTRUZRUUFoQmdOQUlBTWdCa0VDZENJTWFpQUtJQXhxL1FBQ0FQMExBZ0FnQmtFRWFpSUdJQVZIRFFBTElBUWdCVVlOQWdzZ0JTRUdJQVJCQTNFaURBUkFBMEFnQXlBR1FRSjBJaEZxSUFvZ0VXb29BZ0EyQWdBZ0JrRUJhaUVHSUFkQkFXb2lCeUFNUncwQUN3c2dCU0FFYTBGOFN3MEJBMEFnQXlBR1FRSjBJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0F5QUZRUVJxSWdkcUlBY2dDbW9vQWdBMkFnQWdBeUFGUVFocUlnZHFJQWNnQ21vb0FnQTJBZ0FnQXlBRlFReHFJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0JrRUVhaUlHSUFSSERRQUxEQUVMSUFSRkRRQWdGQ0FHTFFBRElnWkJBblJxSVFVZ0NTQUdRVFJzYWlnQ0xDRURRUUFoQmlBRVFRRkhCRUFnQkVGK2NTRVZRUUFoREFOQUlBTWdCa0VDZENJSGFpQUZJQWNnQ21vb0FnQWlFU0FTSUJBZ0VVb2JRUUFnRVVFQVRoc2dDMnhCQW5ScUtBSUFOZ0lBSUFNZ0IwRUVjaUlIYWlBRklBY2dDbW9vQWdBaUJ5QVNJQWNnRUVnYlFRQWdCMEVBVGhzZ0MyeEJBblJxS0FJQU5nSUFJQVpCQW1vaEJpQU1RUUpxSWd3Z0ZVY05BQXNMSUFSQkFYRkZEUUFnQXlBR1FRSjBJZ1JxSUFVZ0JDQUthaWdDQUNJRUlCSWdCQ0FRU0J0QkFDQUVRUUJPR3lBTGJFRUNkR29vQWdBMkFnQUxJQk5CQVdvaUV5QUxSdzBBQ3d3Q0N5QUxRVFJzRUJnaUNRMEJDMEVBSVE0Z0FrRUJRZHpyQUVFQUVCTU1Bd3NnQVNnQ0VDSUZCRUJCQUNFREEwQWdEU0FEUVRSc2FpZ0NMQ0lFQkVBZ0JCQVVDeUFEUVFGcUlnTWdCVWNOQUFzTElBMFFGQ0FCSUFzMkFoQWdBU0FKTmdJWUN5QUFLQUowSWdORkRRRWdBeWdDQUNFSElBTXZBUVFpQ3dSQUlBZEJLbW9oRWlBSFFTUnFJUk1nQjBFZWFpRVJJQWRCR0dvaEZDQUhRUkpxSVJVZ0IwRU1haUVXSUFkQkJtb2hGeUFMUVFKcklSaEJBQ0VEUVFFaEJRTkFBa0FnQVNnQ0VDSUVJQWNnQTBFR2JHb2lEUzhCQUNJR1RRUkFJQWdnQkRZQ0ZDQUlJQVkyQWhBZ0FrRUNRWUU1SUFoQkVHb1FFd3dCQ3lBTkx3RUVJZ2xCQVdwQi8vOERjVUVCVFFSQUlBRW9BaGdnQmtFMGJHb2dEUzhCQWpzQk1Bd0JDeUFKUVFGcklncEIvLzhEY1NJUElBUlBCRUFnQ0NBRU5nSUVJQWdnRHpZQ0FDQUNRUUpCMkRnZ0NCQVREQUVMQWtBZ0JpQVBSZzBBSUEwdkFRSU5BQ0FJSUFFb0FoZ2lDU0FHUVRSc2FpSUVLQUl3TmdMb0FTQUlJQVQ5QUFJZy9Rc0QyQUVnQ0NBRS9RQUNFUDBMQThnQklBZ2dCUDBBQWdEOUN3TzRBU0FFSUFrZ0QwRTBiQ0lNYWlJSktRSUlOd0lJSUFRZ0NTa0NFRGNDRUNBRUlBa3BBaGczQWhnZ0JDQUpLUUlnTndJZ0lBUWdDU2tDS0RjQ0tDQUVJQWtvQWpBMkFqQWdCQ0FKS1FJQU53SUFJQUVvQWhnZ0RHb2lCQ0FJL1FBRHVBSDlDd0lBSUFRZ0NQMEFBOWdCL1FzQ0lDQUVJQWo5QUFQSUFmMExBaEFnQkNBSUtBTG9BVFlDTUNBRFFRRnFJQXRQRFFBZ0JTRUpJQmdnQTJ0Qi8vOERjU0lFUVFkUEJFQWdCU0FFUVFGcUlobEIrUDhIY1NJUWFpRUpJQXI5RUNFa0lBYjlFQ0VqUVFBaERBTkFJQ01nSkNBSElBVWdER3BCQm13aUJHb2lHaThCQVAwUUlBUWdGMm9pR3k4QkFQMGFBU0FFSUJacUlod3ZBUUQ5R2dJZ0JDQVZhaUlkTHdFQS9Sb0RJQVFnRkdvaUhpOEJBUDBhQkNBRUlCRnFJaDh2QVFEOUdnVWdCQ0FUYWlJZ0x3RUEvUm9HSUFRZ0Vtb2lCQzhCQVAwYUJ5SWhJQ1A5TGlBaElDVDlMU0lsL1U1QkQvMkxBVUVQL1l3Qi9WSWhJaUFoSUNQOUxTQWwvVkFpSWYwWkFFRUJjUVJBSUJvZ0l2MVpBUUFBQ3lBaC9Sa0JRUUZ4QkVBZ0d5QWkvVmtCQUFFTElDSDlHUUpCQVhFRVFDQWNJQ0w5V1FFQUFnc2dJZjBaQTBFQmNRUkFJQjBnSXYxWkFRQURDeUFoL1JrRVFRRnhCRUFnSGlBaS9Wa0JBQVFMSUNIOUdRVkJBWEVFUUNBZklDTDlXUUVBQlFzZ0lmMFpCa0VCY1FSQUlDQWdJdjFaQVFBR0N5QWgvUmtIUVFGeEJFQWdCQ0FpL1ZrQkFBY0xJQXhCQ0dvaURDQVFSdzBBQ3lBUUlCbEdEUUVMQTBBZ0NpRUVBa0FnQmlBSElBbEJCbXhxSWd3dkFRQWlFRWNFUUNBR0lRUWdEeUFRUncwQkN5QU1JQVE3QVFBTElBc2dDVUVCYWlJSlFmLy9BM0ZIRFFBTEN5QUJLQUlZSUFaQk5HeHFJQTB2QVFJN0FUQUxJQVZCQVdvaEJTQURRUUZxSWdNZ0MwY05BQXNnQUNnQ2RDSURLQUlBSVFjTElBY0VmeUFIRUJRZ0FDZ0NkQVVnQXdzUUZDQUFRUUEyQW5RTUFRdEJBQ0VPSUFKQkFVSDJ5UUJCQUJBVEN5QUlRZkFCYWlRQUlBNEw1UUVCQlg4akFFRWdheUlFSkFBQ2Z3SkFJQUFvQWp3aUF3UkFRUUVoQlFOQUlBQW9BbVFvQWhnZ0FDZ0NRQ0FDUVFKMGFpZ0NBQ0lHUVRSc2FpZ0NMRVVFUUNBRUlBWTJBaEFnQVVFQ1FZODdJQVJCRUdvUUUwRUFJUVVnQUNnQ1BDRURDeUFDUVFGcUlnSWdBMGtOQUFzTUFRdEJBU0VGUVFFZ0FDZ0NaQ0lES0FJUVJRMEJHZ05BSUFNb0FoZ2dBa0UwYkdvb0FpeEZCRUFnQkNBQ05nSUFJQUZCQWtHUE95QUVFQk5CQUNFRklBQW9BbVFoQXdzZ0FrRUJhaUlDSUFNb0FoQkpEUUFMQzBFQklBVU5BQm9nQVVFQlFhd1dRUUFRRTBFQUN5QUVRU0JxSkFBTCtnWUNFMzhDZmlBQUtBSVlJaEFvQWhCRkJFQkJBUThMSUJBb0FoZ2hEU0FBS0FJVUtBSUFLQUlVSVFzRFFDQUJJQTBvQWlRaUFqWUNKQ0FMS0FJY0lnWWdBa0dZQVd4cUlRTUNRQUpBQW44Z0FDZ0NRQ0lSQkVBZ0JpQUxLQUlZUVpnQmJHb2lBa0dRQVdzb0FnQWdBa0dZQVdzb0FnQnJJUXdnQTBFTWFpRUdJQU5CQkdvaEJDQURLQUlJSVFJZ0F5Z0NBQ0VGUVNRTUFRc2dBMEdVQVdvaEJpQURRWXdCYWlFRUlBTW9BcEFCSWdJZ0F5Z0NpQUVpQldzaERFRTBDeUFMYWlnQ0FDSVNSUTBBSUFRb0FnQWhCeUFHS0FJQUlRa2dBaUFGYXlFR0lBRW9BZ2dpQTBKL0lBRTFBaWdpRllaQ2Y0VWlGaUFCTlFJUWZDQVZpS2NpQ0dvaEJBSi9JQVVnQ0VzRVFDQUZJQWhySVE1QkFDRUlRUUFnQWlBRVRRMEJHaUFHSUFRZ0JXc2lCbXNNQVFzZ0NDQUZheUVJSUFJZ0JFMEVRQ0FHSUFocklRWkJBQ0VPUVFBTUFRdEJBQ0VPSUFNaEJpQUNJQVJyQ3lBSklBZHJJUUlnQVNnQ0RDSUVJQllnQVRVQ0ZId2dGWWluSWdwcUlRVUNmeUFISUFwTEJFQWdCeUFLYXlFUFFRQWhDa0VBSUFVZ0NVOE5BUm9nQWlBRklBZHJJZ0pyREFFTElBb2dCMnNoQ2lBRklBbFBCRUFnQWlBS2F5RUNRUUFoRDBFQURBRUxRUUFoRHlBRUlRSWdDU0FGYXdzaEIwRUFJUVVnQ0VFQVNBMEJJQXBCQUVnTkFVRUFTQTBCSUFkQkFFZ05BU0FHUVFCSURRRWdBa0VBU0EwQklBTWdEMndnRG1vaEJ5QUtJQXhzSUFocUlRa0NRQUpBQWtBZ0FTZ0NMQ0lJRFFBZ0NRMEFJQWNOQUNBRElBeEhEUUFnQXlBR1J3MEFJQUlnQkVjTkFTQUJJQXRCSkVFMElCRWJhaUlDS0FJQU5nSXNJQUpCQURZQ0FBd0RDeUFJRFFFTElBUkZEUUlnQkswZ0E2MStRaUNJcHcwQ0lBTWdCR3dpQTBILy8vLy9BMHNOQWlBQklBTkJBblFRSENJRE5nSXNJQU5GRFFJZ0JpQUJLQUlJSWdSR0lBRW9BZ3dpQlNBQ1JuRU5BQ0FEUVFBZ0JDQUZiRUVDZEJBWkdnc2dBa1VOQUNBQ1FRRnhJQVpCQW5RaEJpQUJLQUlzSUFkQkFuUnFJUVFnRWlBSlFRSjBhaUVGSUFKQkFVY0VRQ0FDUWY3Ly8vOEhjU0VIUVFBaEFnTkFJQVFnQlNBR0VCWWdCU0FNUVFKMElnbHFJZ2dnQ1dvaEJTQUJLQUlJUVFKMGFpQUlJQVlRRmlBQktBSUlRUUowYWlFRUlBSkJBbW9pQWlBSFJ3MEFDd3RGRFFBZ0JDQUZJQVlRRmhvTElBdEJ6QUJxSVFzZ0RVRTBhaUVOSUFGQk5Hb2hBVUVCSVFVZ0ZFRUJhaUlVSUJBb0FoQkpEUUVMQ3lBRkN3UUFRWDhMZ0JRQ0NYOEtmaU1BUWFBQmF5SUZKQUFDUUNBQ1FTTk5CRUJCQUNFQ0lBTkJBVUdxTDBFQUVCTU1BUXNnQWtFa2F5SUNJQUpCQTI0aUNVRURiRWNFUUVFQUlRSWdBMEVCUWFvdlFRQVFFd3dCQ3lBQUtBSmdJUVlnQVNBRlFad0JhaUlDUVFJUUZTQUFJQVVvQXB3Qk93Rm9JQUZCQW1vZ0JrRUlha0VFRUJVZ0FVRUdhaUFHUVF4cVFRUVFGU0FCUVFwcUlBWkJCQkFWSUFGQkRtb2dCa0VFYWtFRUVCVWdBVUVTYWlBQVFmUUFha0VFRUJVZ0FVRVdhaUFBUWZnQWFrRUVFQlVnQVVFYWFpQUFRZXdBYWtFRUVCVWdBVUVlYWlBQVFmQUFha0VFRUJVZ0FVRWlhaUFDUVFJUUZRSkFBa0FDUUNBRktBS2NBU0lDUVlDQUFVMEVRQ0FHSUFJMkFoQWdBaUFKUndSQUlBVWdDVFlDaEFFZ0JTQUNOZ0tBQVNBRFFRRkIzL1FBSUFWQmdBRnFFQk5CQUNFQ0RBVUxJQVlvQWdRaUFpQUdLQUlNSWdkSklBWW9BZ2dpQ3lBR0tBSUFJZ1JMY1VVRVFDQUZJQWV0SUFLdGZUY0RlQ0FGSUF1dElBU3RmVGNEY0NBRFFRRkJxZkVBSUFWQjhBQnFFQk5CQUNFQ0RBVUxJQUFvQW5RaUNFRUFJQUFvQW5naUNodEZCRUFnQlNBS05nSUVJQVVnQ0RZQ0FDQURRUUZCMGZVQUlBVVFFMEVBSVFJTUJRc0NRQUpBSUFBb0Ftd2lEQ0FFU3cwQVFYOGdDQ0FNYWlJSUlBZ2dERWtiSUFSTkRRQWdBQ2dDY0NJSUlBSkxEUUJCZnlBSUlBcHFJZ29nQ0NBS1N4c2dBa3NOQVF0QkFDRUNJQU5CQVVIREZVRUFFQk1NQlFzQ1FDQUFLQUw0QVEwQUlBQW9BdkFCSWdoRkRRQWdBQ2dDOUFFaUNrVU5BQ0FMSUFScklnUWdDRVlnQnlBQ2F5SUNJQXBHY1EwQUlBVWdBallDYkNBRklBUTJBbWdnQlNBS05nSmtJQVVnQ0RZQ1lDQURRUUZCa2UwQUlBVkI0QUJxRUJOQkFDRUNEQVVMSUFZZ0NVRTBFQmNpQkRZQ0dDQUVSUTBCQWtBZ0JpZ0NFRVVOQUNBQlFTUnFJQVZCbUFGcUlnSkJBUkFWSUFRZ0JTZ0NtQUVpQ1VFSGRpSUtOZ0lnSUFRZ0NVSC9BSEZCQVdvaUREWUNHQ0FBS0FMNEFTRUxJQUZCSldvZ0FrRUJFQlVnQkNBRktBS1lBVFlDQUNBQlFTWnFJQUpCQVJBVklBUWdCU2dDbUFFaUJ6WUNCRUVBSVFJZ0JDZ0NBQ0lJUVlBQ2EwR0Jma2tFUUVFQUlRa01CUXRCQUNFSklBZEJnQUpyUVlGK1NRMEVJQVFvQWhnaUIwRWZTdzBESUFSQkFEWUNKQ0FFSUFBb0FyZ0JOZ0lvUVFFaENTQUdLQUlRUVFGTkRRQkJBQ0FLSUFzYklRcEJBQ0FNSUFzYklRc2dBVUVuYWlFQkEwQWdBU0FGUVpnQmFrRUJFQlVnQkNBRktBS1lBU0lJUVFkMklnYzJBbFFnQkNBSVFmOEFjVUVCYWlJSU5nSk1Ba0FnQUNnQytBRU5BQ0FBTFFEVUFVRUVjUTBBSUFnZ0MwWWdCeUFLUm5FTkFDQUZJQWMyQWxRZ0JTQUlOZ0pRSUFVZ0NUWUNUQ0FGSUFvMkFrZ2dCU0FMTmdKRUlBVWdDVFlDUUNBRFFRSkJsZk1BSUFWQlFHc1FFd3NnQVVFQmFpQUZRWmdCYWlJSFFRRVFGU0FFSUFVb0FwZ0JOZ0kwSUFGQkFtb2dCMEVCRUJVZ0JDQUZLQUtZQVNJSE5nSTRJQVFvQWpRaUNFR0FBbXRCZ1g1SkRRVWdCMEdBQW10QmdINU5EUVVnQkNnQ1RDSUhRU0JQRFFRZ0FVRURhaUVCSUFSQkFEWUNXQ0FFSUFBb0FyZ0JOZ0pjSUFSQk5Hb2hCQ0FKUVFGcUlna2dCaWdDRUVrTkFBc0xRUUFoQWlBQUtBSjBJZ2RGRFFRZ0FDZ0NlQ0lMUlEwRUlBQWdCNjBpRFVJQmZTSVBJQVlvQWdnZ0FDZ0NiQ0lJYTYxOElBMkFweUlCTmdLQUFTQUFJQXV0SWc1Q0FYMGlFQ0FHS0FJTUlBQW9BbkFpQ211dGZDQU9nS2NpQkRZQ2hBRUNRQUpBSUFGRkRRQWdCRVVOQUVILy93TWdCRzRnQVU4TkFRc2dCU0FFTmdJVUlBVWdBVFlDRUNBRFFRRkJnKzRBSUFWQkVHb1FFd3dGQ3lBQklBUnNJUWtDUUNBQUxRQmNRUUp4QkVBZ0FDQUFLQUljSUFocklBZHVOZ0ljSUFBZ0FDZ0NJQ0FLYXlBTGJqWUNJQ0FBSUE4Z0FDZ0NKQ0FJYTYxOElBMkFQZ0lrSUFBZ0VDQUFLQUlvSUFwcnJYd2dEb0ErQWlnTUFRc2dBQ0FFTmdJb0lBQWdBVFlDSkNBQVFnQTNBaHdMSUFBZ0NVR01MQkFYSWdFMkFyUUJJQUZGQkVBZ0EwRUJRYm9lUVFBUUV3d0ZDeUFHS0FJUVFiZ0lFQmNoQVNBQUtBSU1JQUUyQXRBcklBQW9BZ3dvQXRBclJRUkFJQU5CQVVHNkhrRUFFQk1NQlF0QkNrRVVFQmNoQVNBQUtBSU1JQUUyQXZBcklBQW9BZ3dpQVNnQzhDdEZCRUFnQTBFQlFib2VRUUFRRXd3RkN5QUJRUW8yQXZnclFRcEJGQkFYSVFFZ0FDZ0NEQ0FCTmdMOEt5QUFLQUlNSWdFb0F2d3JSUVJBSUFOQkFVRzZIa0VBRUJNTUJRc2dBVUVLTmdLRUxBSkFJQVlvQWhBaUIwVU5BQ0FHS0FJWUlRdEJBQ0VCSUFkQkFVY0VRQ0FIUVg1eElRaEJBQ0VFQTBBZ0N5QUJRVFJzYWlJS0tBSWdSUVJBSUFBb0Fnd29BdEFySUFGQnVBaHNha0VCSUFvb0FoaEJBV3QwTmdLMENBc2dDeUFCUVFGeUlncEJOR3hxSWd3b0FpQkZCRUFnQUNnQ0RDZ0MwQ3NnQ2tHNENHeHFRUUVnRENnQ0dFRUJhM1EyQXJRSUN5QUJRUUpxSVFFZ0JFRUNhaUlFSUFoSERRQUxDeUFIUVFGeFJRMEFJQXNnQVVFMGJHb2lCQ2dDSUEwQUlBQW9BZ3dvQXRBcklBRkJ1QWhzYWtFQklBUW9BaGhCQVd0ME5nSzBDQXNnQ1FSQUlBQW9BclFCSVFGQkFDRUVBMEFnQVNBR0tBSVFRYmdJRUJjaUJ6WUMwQ3NnQjBVRVFDQURRUUZCdWg1QkFCQVREQWNMSUFGQmpDeHFJUUVnQkVFQmFpSUVJQWxKRFFBTEN3Si9JQUFvQXVBQklBQW9Bb1FCSUFBb0FvQUJiQ0lCTmdJa0lBRkJLQkFYSVFFZ0FDZ0M0QUVpQXlBQk5nSW9RUUFnQVVVTkFCcEJBU0FES0FJa1JRMEFHa0VBSVFNRFFBSkFRUUFoQkNBQklBTkJLR3dpQjJvaUFVRUFOZ0lVSUFGQjVBQTJBaHhCNUFCQkdCQVhJUWtnQnlBQUtBTGdBU0lMS0FJb0lnRnFJQWsyQWhnZ0NVVU5BRUVCSVFRZ0EwRUJhaUlESUFzb0FpUkpEUUVMQ3lBRUMwVU5CQ0FBUVFRMkFnZ2dCaWdDRUNJREJFQkJmeUFBS0FKd0lnRWdBQ2dDZUNJQ0lBQW9Bb1FCUVFGcmJHb2lCQ0FDYWlJQ0lBSWdCRWtiSWdJZ0JpZ0NEQ0lFSUFJZ0JFa2JyVUlCZlNFUVFYOGdBQ2dDYkNJQ0lBQW9BblFpQkNBQUtBS0FBVUVCYTJ4cUlnQWdCR29pQkNBQUlBUkxHeUlBSUFZb0FnZ2lCQ0FBSUFSSkc2MUNBWDBoRVNBQklBWW9BZ1FpQUNBQUlBRkpHNjFDQVgwaEVpQUNJQVlvQWdBaUFDQUFJQUpKRzYxQ0FYMGhFeUFHS0FJWUlRQkJBQ0VCQTBBZ0FDQVNJQUExQWdRaURYd2dEWUFpRkQ0Q0ZDQUFJQk1nQURVQ0FDSU9mQ0FPZ0NJVlBnSVFJQUJDZnlBQU5RSW9JZytHUW4rRkloWWdEU0FRZkNBTmdDQVVmVUwvLy8vL0Q0TjhJQStJUGdJTUlBQWdEaUFSZkNBT2dDQVZmVUwvLy8vL0Q0TWdGbndnRDRnK0FnZ2dBRUUwYWlFQUlBRkJBV29pQVNBRFJ3MEFDd3RCQVNFQ0RBUUxJQVVnQWpZQ2tBRWdBMEVCUWRjOUlBVkJrQUZxRUJOQkFDRUNEQU1MUVFBaEFpQUdRUUEyQWhBZ0EwRUJRYm9lUVFBUUV3d0NDeUFGSUFjMkFqUWdCU0FKTmdJd0lBTkJBVUdGK0FBZ0JVRXdhaEFUREFFTElBVWdCellDS0NBRklBZzJBaVFnQlNBSk5nSWdJQU5CQVVIZjd3QWdCVUVnYWhBVEN5QUZRYUFCYWlRQUlBSUxtZ01CQm44akFFRVFheUlHSkFBQ2Z5QUNJQUpCQVVFQ0lBQW9BbUFvQWhBaUNFR0JBa2tiSWdkQkFYUkJCV29pQkc0aUJTQUViRVlnQWlBRVQzRkZCRUFnQTBFQlFmNGpRUUFRRTBFQURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0FyUUJJQUFvQXVRQlFZd3NiR29NQVFzZ0FDZ0NEQXNoQkVFQUlRQWdCQzBBaUN3aUFrRUVjUVJBSUFRb0FxUURRUUZxSVFBTElBQWdCV29pQlVFZ1R3UkFJQVlnQlRZQ0FDQURRUUZCd0R3Z0JoQVRRUUFNQVFzZ0JDQUNRUVJ5T2dDSUxDQUFJQVZKQkVBZ0JDQUFRWlFCYkdwQnFBTnFJUUlEUUNBQklBSkJBUkFWSUFGQkFXb2lBU0FDUVFScUlBY1FGU0FCSUFkcUlnRWdBa0VJYWtFQ0VCVWdBaUFDS0FJSUlnTWdCQ2dDQ0NJSklBTWdDVWtiTmdJSUlBRkJBbW9nQWtFTWFrRUJFQlVnQVVFRGFpSUJJQUpCRUdvZ0J4QVZJQUVnQjJvaUFTQUdRUXhxUVFFUUZTQUNJQVlvQWd3MkFpUWdBaUFDS0FJUUlnTWdDQ0FESUFoSkd6WUNFQ0FDUVpRQmFpRUNJQUZCQVdvaEFTQUFRUUZxSWdBZ0JVY05BQXNMSUFRZ0JVRUJhellDcEFOQkFRc2dCa0VRYWlRQUMrZ0JBUU4vSXdCQkVHc2lCQ1FBQW44Q1FDQUJJQVJCQ0dvQ2Z5QUFLQUpnS0FJUVFZQUNUUVJBSUFJRVFFRi9JUVZCQVF3Q0N5QURRUUZCc2lSQkFCQVRRUUFNQXdzZ0FrRUJUUTBCUVg0aEJVRUNDeUlHRUJVZ0JDQUNJQVZxTmdJTUlBUW9BZ2dpQWlBQUtBSmdLQUlRSWdWUEJFQWdCQ0FGTmdJRUlBUWdBallDQUNBRFFRRkIrenNnQkJBVFFRQU1BZ3NnQUNBQ0lBRWdCbW9nQkVFTWFpQURFRXRGQkVBZ0EwRUJRYklrUVFBUUUwRUFEQUlMUVFFZ0JDZ0NERVVOQVJvZ0EwRUJRYklrUVFBUUUwRUFEQUVMSUFOQkFVR3lKRUVBRUJOQkFBc2dCRUVRYWlRQUM5VUJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQUpBQWtBZ0FFRUFJQUVnQkVFTWFpQURFRXRGRFFBZ0JDZ0NEQTBBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREF0QkFTRUZJQUFvQW1Bb0FoQkJBa2tOQVNnQzBDc2lBa0VjYWlFR1FRRWhBU0FDSVFNRFFDQURJQUlvQWhnMkF0QUlJQU1nQWlnQ3BBWTJBdHdPSUFOQjFBaHFJQVpCaUFZUUZob2dBMEc0Q0dvaEF5QUJRUUZxSWdFZ0FDZ0NZQ2dDRUVrTkFBc01BUXNnQTBFQlFjb2pRUUFRRXdzZ0JFRVFhaVFBSUFVTDFnRUJBMzhqQUVFUWF5SUVKQUFDUUNBQ1FRRkJBaUFBS0FKZ0tBSVFJZ0pCZ1FKSkd5SUZRUUpxUndSQVFRQWhBQ0FEUVFGQm1DRkJBQkFUREFFTEFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXJRQklBQW9BdVFCUVl3c2JHb01BUXNnQUNnQ0RBc2hCaUFCSUFSQkRHb2dCUkFWUVFFaEFDQUJJQVZxSWdVZ0JFRUlha0VCRUJVZ0FpQUVLQUlNSWdGTkJFQWdCQ0FDTmdJRUlBUWdBVFlDQUNBRFFRRkJwdlFBSUFRUUUwRUFJUUFNQVFzZ0JVRUJhaUFHS0FMUUt5QUJRYmdJYkdwQnFBWnFRUUVRRlFzZ0JFRVFhaVFBSUFBTGhBSUJCWDhqQUVFUWF5SUVKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0N0QUVnQUNnQzVBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFR0FrQkJBVUVDSUFBb0FtQWlCeWdDRUVHQkFra2JJZ1VnQWs4RVFFRUFJUUlnQTBFQlFaZ2tRUUFRRXd3QkN5QUVJQUlnQlVGL2MybzJBZ3dnQVNBRVFRaHFJQVVRRlNBRUtBSUlJZ2dnQnlnQ0VFOEVRRUVBSVFJZ0EwRUJRYzd0QUVFQUVCTU1BUXRCQVNFQ0lBRWdCV29pQVNBR0tBTFFLeUFJUWJnSWJHcEJBUkFWSUFBZ0JDZ0NDQ0FCUVFGcUlBUkJER29nQXhCTVJRUkFRUUFoQWlBRFFRRkJtQ1JCQUJBVERBRUxJQVFvQWd4RkRRQkJBQ0VDSUFOQkFVR1lKRUVBRUJNTElBUkJFR29rQUNBQ0M2d0dBUWQvSXdCQkVHc2lCaVFBSUFZZ0FqWUNEQ0FBS0FKZ0lRa0NmeUFBS0FJSVFSQkdCRUFnQUNnQ3RBRWdBQ2dDNUFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUlFSUFRdEFJZ3NRUUZ5T2dDSUxBSkFJQUpCQkUwRVFDQURRUUZCc0NOQkFCQVREQUVMSUFFZ0JFRUJFQlVnQkNnQ0FFRUlUd1JBSUFOQkFVR09JMEVBRUJNTUFRc2dBVUVCYWlBR1FRaHFRUUVRRlNBRUlBWW9BZ2dpQWpZQ0JDQUNRUVZPQkVBZ0EwRUJRZVVpUVFBUUV5QUVRWDgyQWdRTElBRkJBbW9nQkVFSWFrRUNFQlVnQkNnQ0NDSUhRWUNBQkd0QmdJQjhUUVJBSUFZZ0J6WUNBQ0FEUVFGQmlqOGdCaEFUREFFTElBUWdBQ2dDdkFFaUFpQUhJQUliTmdJTUlBRkJCR29nQkVFUWFrRUJFQlVnQkNnQ0VFRUNUd1JBSUFOQkFVSDdLa0VBRUJNTUFRc2dBVUVGYWlFQ0lBWWdCaWdDREVFRmF6WUNEQUpBSUFrb0FoQWlCMFVOQUNBRUtBSUFRUUZ4SVFnZ0JDZ0MwQ3NoQkVFQUlRa2dCMEVJVHdSQUlBZEJlSEVoQVFOQUlBUWdCVUc0Q0d4cUlBZzJBZ0FnQkNBRlFRRnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkFuSkJ1QWhzYWlBSU5nSUFJQVFnQlVFRGNrRzRDR3hxSUFnMkFnQWdCQ0FGUVFSeVFiZ0liR29nQ0RZQ0FDQUVJQVZCQlhKQnVBaHNhaUFJTmdJQUlBUWdCVUVHY2tHNENHeHFJQWcyQWdBZ0JDQUZRUWR5UWJnSWJHb2dDRFlDQUNBRlFRaHFJUVVnQ2tFSWFpSUtJQUZIRFFBTEN5QUhRUWR4SWdGRkRRQURRQ0FFSUFWQnVBaHNhaUFJTmdJQUlBVkJBV29oQlNBSlFRRnFJZ2tnQVVjTkFBc0xRUUFoQlNBQVFRQWdBaUFHUVF4cUlBTVFURVVFUUNBRFFRRkJzQ05CQUJBVERBRUxJQVlvQWd3RVFDQURRUUZCc0NOQkFCQVREQUVMQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEFTQUFLQUpnS0FJUVFRSlBCRUFnQVNnQzBDc2lBU2dDQkVFQ2RDRUhJQUZCc0FkcUlRb2dBVUdzQm1vaEEwRUJJUWtnQVNFQ0EwQWdBaUFCL1FBQ0JQMExBcndJSUFJZ0FTZ0NGRFlDekFnZ0FrSGtEbW9nQXlBSEVCWWFJQUpCNkE5cUlBb2dCeEFXR2lBQ1FiZ0lhaUVDSUFsQkFXb2lDU0FBS0FKZ0tBSVFTUTBBQ3d0QkFTRUZDeUFHUVJCcUpBQWdCUXZyQ2dFR2Z5TUFRWUFCYXlJRkpBQWdCVUVBTmdKNEFrQWdBa0VJUndSQUlBTkJBVUdxSDBFQUVCTWdBMEVCUWFvZlFRQVFFd3dCQ3lBQklBQkI1QUZxUVFJUUZTQUJRUUpxSUFWQi9BQnFRUVFRRlNBQlFRWnFJQVZCOUFCcVFRRVFGU0FCUVFkcUlBVkIrQUJxUVFFUUZTQUFLQUxrQVNJQklBQW9Bb0FCSWdnZ0FDZ0NoQUZzVHdSQUlBVWdBVFlDY0NBRFFRRkIvandnQlVId0FHb1FFd3dCQ3lBQUtBSzBBU0FCUVl3c2JHb2hBaUFCSUFodUlRY2dCU2dDZENFRUFrQWdBQ2dDTENJR1FRQk9JQUVnQmtkeERRQWdBaWdDMUN0QkFXb2lCaUFFUmcwQUlBVWdCallDYUNBRklBUTJBbVFnQlNBQk5nSmdJQU5CQVVHV1BTQUZRZUFBYWhBVFFRQWhCQXdCQ3lBQ0lBUTJBdFFyQWtBZ0JTZ0NmQ0lFUVFGclFReE5CSDhnQkVFTVJ3MEJJQVZCRERZQ1FDQURRUUpCczl3QUlBVkJRR3NRRXlBRktBSjhCU0FFQzBVRVFDQURRUVJCb3RNQVFRQVFFeUFBUVFFMkFqZ0xBa0FDUUFKQUFrQWdBaWdDMkNzaUJnUkFJQVVvQW5RaUJDQUdTUTBCSUFVZ0JqWUNOQ0FGSUFRMkFqQWdBMEVCUWZrbklBVkJNR29RRXlBQVFRRTJBamhCQUNFRURBWUxJQVVvQW5naUJBMEJEQU1MSUFVb0FuZ2lCRVVOQVFzZ0JTQUVJQUF0QUZ4QkJIWkJBWEZxSWdZMkFuZ2dCU2dDZENJRUlBSW9BdGdySWdsQkFXdExCRUFnQlNBSk5nSVVJQVVnQkRZQ0VDQURRUUZCbGljZ0JVRVFhaEFUSUFCQkFUWUNPRUVBSVFRTUJBc2dCQ0FHVHdSQUlBVWdCallDSkNBRklBUTJBaUFnQTBFQlFkMG9JQVZCSUdvUUV5QUFRUUUyQWpoQkFDRUVEQVFMSUFJZ0JqWUMyQ3NMSUFZZ0JTZ0NkRUVCYWtjTkFDQUFJQUF0QUZ4QkFYSTZBRndMSUFVb0Fud2hBaUFBUVJBMkFnZ2dBRUVBSUFKQkRHc2dBQ2dDT0JzMkFoZ0NRQ0FBS0FJc0lnSkJmMFlFUUVFRUlRUUNRQ0FCSUFjZ0NHeHJJZ0VnQUNnQ0hFa05BQ0FCSUFBb0FpUlBEUUFnQnlBQUtBSWdTUTBBSUFjZ0FDZ0NLRTlCQW5RaEJBc2dBQ0FBTFFCY1Fmc0JjU0FFY2pvQVhDQUFLQUxrQVNFQkRBRUxJQUFnQUMwQVhFSDdBWEVnQUNnQzVBRWlBU0FDUjBFQ2RISTZBRndMSUFBb0F1QUJLQUlvSUFGQktHeHFJZ0lnQVRZQ0FDQUNJQVVvQW5RMkFnd2dCU2dDZUNFRUlBQW9Ba3hGQkVBZ0FpZ0NCQ0FFVHdSQVFRRWhCQXdEQ3lBRklBRTJBZ0FnQTBFQ1FhY01JQVVRRXlBQVFRRTJBa3dnQlNnQ2VDRUVDeUFBS0FMa0FTRUJJQUFvQXVBQktBSW9JUUlnQkFSQUlBSWdBVUVvYkdvaUFTQUVOZ0lFSUFFZ0JTZ0NlQ0lDTmdJSUlBRW9BaEFpQVVVRVFDQUNRUmdRRnlFQklBQW9BdUFCS0FJb0lBQW9BdVFCUVNoc2FpQUJOZ0lRSUFFRVFFRUJJUVFNQkF0QkFDRUVJQU5CQVVIK05VRUFFQk1NQXdzZ0FTQUNRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0RDeUFDSUFFMkFoQkJBU0VFREFJTEFrQWdBaUFCUVNoc2FpSUVLQUlRSWdZTkFDQUVRUW8yQWdoQkNrRVlFQmNoQmlBQUtBTGdBU2dDS0NJQ0lBQW9BdVFCSWdGQktHeHFJQVkyQWhBZ0JnMEFRUUFoQkNBQ0lBRkJLR3hxUVFBMkFnZ2dBMEVCUWY0MVFRQVFFd3dDQ3lBRktBSjBJZ2NnQWlBQlFTaHNhaUlCS0FJSVNRUkFRUUVoQkF3Q0MwRUJJUVFnQVNBSFFRRnFJZ0UyQWdnZ0JpQUJRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFJZ0JCQURZQ0NDQUFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0NDeUFDSUFFMkFoQU1BUXNnQlNBRU5nSlFJQU5CQVVIQTNnQWdCVUhRQUdvUUUwRUFJUVFMSUFWQmdBRnFKQUFnQkF2YUJnRUlmeU1BUWRBQWF5SURKQUFnQTBFQk5nSk1JQUFvQWl3aENRSkFBa0FnQUNnQzRBRW9BaWdpQkVVTkFDQUVLQUlRUlEwQUFrQWdCQ0FKUVNoc2FpSUVLQUlFUlFSQUlBRWdBQ2tETUVJQ2ZDQUNFREFOQVNBQ1FRRkJteXBCQUJBVERBTUxJQUVnQkNnQ0VDa0RBQ0FDRURCRkJFQWdBa0VCUVpzcVFRQVFFd3dEQ3lBQklBQW9BaEJCQWlBQ0VCMUJBa2NFUUNBQ1FRRkJneE5CQUJBVERBTUxJQUFvQWhBZ0EwSElBR3BCQWhBVklBTW9Ba2hCa1A4RFJnMEFJQUpCQVVIRUgwRUFFQk1NQWdzZ0FDZ0NDRUdBQWtjTkFDQUFRUWcyQWdnTEFrQWdBQ2dDaEFFZ0FDZ0NnQUZzSWdkRkRRQWdBQ2dDdEFFaEJVRUFJUVFnQjBFSVR3UkFJQWRCZUhFaENBTkFJQVVnQkVHTUxHeHFRWDgyQXRRcklBVWdCRUVCY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVDY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVEY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVFY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVGY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVHY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVIY2tHTUxHeHFRWDgyQXRRcklBUkJDR29oQkNBS1FRaHFJZ29nQ0VjTkFBc0xJQWRCQjNFaUIwVU5BQU5BSUFVZ0JFR01MR3hxUVg4MkF0UXJJQVJCQVdvaEJDQUdRUUZxSWdZZ0IwY05BQXNMUVFBaEJpQUFJQU5CeUFCcVFRQWdBMEhFQUdvZ0EwRkFheUFEUVR4cUlBTkJPR29nQTBFMGFpQURRY3dBYWlBQklBSVFMRVVOQUNBSlFRRnFJUWNEUUFKQUlBTW9Ba3hGRFFBZ0FDQURLQUpJSWdSQkFFRUFJQUVnQWhBeFJRMENJQUFvQW9BQklRZ2dBQ2dDaEFFaENpQURJQVJCQVdvaUJUWUNJQ0FESUFnZ0NtdzJBaVFnQWtFRVFlN2JBQ0FEUVNCcUVCTWdBQ2dDNkFFZ0FDZ0NaQ2dDR0JDQUFVVU5BaUFBS0FLMEFTQUVRWXdzYkdvaUJpZ0MzQ3NpQ0FSQUlBZ1FGQ0FHUWdBM0F0d3JDeUFESUFVMkFoQWdBa0VFUWJTQkFTQURRUkJxRUJNZ0JDQUpSZ1JBSUFFZ0FDZ0M0QUVwQXdoQ0Fud2dBaEF3RFFGQkFDRUdJQUpCQVVHYktrRUFFQk1NQXdzZ0F5QUhOZ0lFSUFNZ0JUWUNBQ0FDUVFKQnErb0FJQU1RRTBFQUlRWWdBQ0FEUWNnQWFrRUFJQU5CeEFCcUlBTkJRR3NnQTBFOGFpQURRVGhxSUFOQk5Hb2dBMEhNQUdvZ0FTQUNFQ3dOQVF3Q0N3c2dBQ0FDRUg4aEJnc2dBMEhRQUdva0FDQUdDNFlVQXc1L0FuNEJleU1BUWRBQWF5SUpKQUFnQ1VFQk5nSk1Ba0FDUUNBQUtBS0FBVUVCUncwQUlBQW9Bb1FCUVFGSERRQWdBQ2dDYkEwQUlBQW9BbkFOQUNBQUtBSmtJZ01vQWdBTkFDQURLQUlFRFFBZ0F5Z0NDQ0FBS0FKMFJ3MEFJQU1vQWd3Z0FDZ0NlRWNOQUVFQUlRTWdBQ0FKUWNnQWFrRUFJQWxCeEFCcUlBbEJRR3NnQ1VFOGFpQUpRVGhxSUFsQk5Hb2dDVUhNQUdvZ0FTQUNFQ3hGRFFFQ1FBSkFJQWtvQWt4RkRRQWdBQ0FKS0FKSVFRQkJBQ0FCSUFJUU1VVU5BQ0FBS0FKa0lnRW9BaEFOQVVFQklRTU1Bd3NnQWtFQlFhUEVBRUVBRUJNTUFnc2dBU2dDR0NFRkEwQWdCU0FFUVRSc0lnRnFLQUlzRUJRZ0FDZ0NaQ0lDS0FJWUlnVWdBV29pQXlBQUtBTG9BU0lIS0FJVUtBSUFLQUlVSUFSQnpBQnNhaUlHS0FJa05nSXNJQU1nQnlnQ0dDZ0NHQ0FCYWlnQ0pEWUNKQ0FHUVFBMkFpUkJBU0VESUFSQkFXb2lCQ0FDS0FJUVNRMEFDd3dCQ3lBQVFnQTNBMUFnQUNnQ1dCQVVJQUJCQURZQ1dBSkFBa0FnQUNnQ0hBMEFJQUFvQWlBTkFDQUFLQUlrSUFBb0FvQUJSdzBBUWdJaEVTQUFLQUlvSUFBb0FvUUJSZzBCQzBJQ0lSRWdBQ2dDVEEwQUlBRW9BaHhCQWtZTkFDQUFLQUtBQVNJTklBQW9Bb1FCYkNJREJINGdBMEVCY1NFRUlBQW9BdUFCS0FJb0lRY0NRQ0FEUVFGR0JFQkJBQ0VEUWdBaEVRd0JDeUFEUVg1eElRWkJBQ0VEUWdBaEVRTkFJQWNnQTBFb2JHb2lDQ2dDQkNJS0JFQWdDQ2dDRUNBS1FSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnQnlBRFFRRnlRU2hzYWlJSUtBSUVJZ29FUUNBSUtBSVFJQXBCR0d4cVFRaHJLUU1BSWhJZ0VTQVJJQkpUR3lFUkN5QURRUUpxSVFNZ0JVRUNhaUlGSUFaSERRQUxDd0pBSUFSRkRRQWdCeUFEUVNoc2FpSURLQUlFSWdWRkRRQWdBeWdDRUNBRlFSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnRVVJQ2ZBVkNBZ3NoRVVFQUlRUUNRQ0FBS0FJZ0lnWWdBQ2dDS0NJT1R3MEFJQUFvQWlRaUNDQUFLQUljSWdWTkRRQWdCU0FJSUFWcklncEJmSEVpQzJvaEJ5QUFLQUxnQVNnQ0tDRVBJQXBCQkVraEVBTkFJQThnQmlBTmJFRW9iR29oREFKQUFrQWdFQVJBSUFVaEF3d0JDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFL1J3QUlSTkJBQ0VFQTBBZ0RDQUVJQVZxUVNoc2FpSURRZndBYWlBRFFkUUFhaUFEUVN4cUlBTkJCR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJQOXJnRWhFeUFFUVFScUlnUWdDMGNOQUFzZ0V5QVRJQlA5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5cmdFaUV5QVRJQlA5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5cmdIOUd3QWhCQ0FISVFNZ0NpQUxSZzBCQ3dOQUlBd2dBMEVvYkdvb0FnUWdCR29oQkNBRFFRRnFJZ01nQ0VjTkFBc0xJQVpCQVdvaUJpQU9SdzBBQ3dzZ0FDQUVRUU4wRUJnaUJ6WUNXQ0FFUlEwQUlBZEZEUUJCQUNFRUFrQWdBQ2dDSUNJR0lBQW9BaWdpQTA4TkFDQUFLQUlrSWdVZ0FDZ0NIRTBOQUFOQUlBVWdBQ2dDSENJSFN3UkFJQUFvQXVBQktBSW9JQUFvQW9BQklBWnNRU2hzYWlFTkEwQWdEU0FIUVNoc2FpSUlLQUlFSWdNRVFDQURRUU54SVFvZ0NDZ0NFQ0VGUVFBaEN3SkFJQU5CQkVrRVFFRUFJUU1NQVFzZ0EwRjhjU0VPUVFBaEEwRUFJUXdEUUNBRVFRTjBJZ2dnQUNnQ1dHb2dCU0FEUVJoc2Fpa0RBRGNEQUNBQUtBSllJQWhxSUFVZ0EwRUJja0VZYkdvcEF3QTNBd2dnQUNnQ1dDQUlhaUFGSUFOQkFuSkJHR3hxS1FNQU53TVFJQUFvQWxnZ0NHb2dCU0FEUVFOeVFSaHNhaWtEQURjREdDQURRUVJxSVFNZ0JFRUVhaUVFSUF4QkJHb2lEQ0FPUncwQUN3c2dDZ1JBQTBBZ0FDZ0NXQ0FFUVFOMGFpQUZJQU5CR0d4cUtRTUFOd01BSUFOQkFXb2hBeUFFUVFGcUlRUWdDMEVCYWlJTElBcEhEUUFMQ3lBQUtBSWtJUVVMSUFkQkFXb2lCeUFGU1EwQUN5QUFLQUlvSVFNTElBWkJBV29pQmlBRFNRMEFDeUFBS0FKWUlRY0xJQUFnQkRZQ1ZDTUFRZEFCYXlJR0pBQWdCa0lCTndNSUFrQWdCRUVEZENJS1JRMEFJQVpCQ0RZQ0VDQUdRUWcyQWhSQkNDSUZJUVJCQWlFSUEwQWdCa0VRYWlBSVFRSjBhaUFGSWdNZ0JFRUlhbW9pQlRZQ0FDQUlRUUZxSVFnZ0F5RUVJQVVnQ2trTkFBc0NmeUFISUFwcVFRaHJJZ01nQjAwRVFFRUJJUWhCQVNFRlFRQU1BUXRCQVNFSVFRRWhCUU5BQW44Z0NFRURjVUVEUmdSQUlBY2dCU0FHUVJCcUVFUWdCa0VJYWtFQ0VEd2dCVUVDYWd3QkN3SkFJQVpCRUdvaUJDQUZRUUZySWdwQkFuUnFLQUlBSUFNZ0IydFBCRUFnQnlBSUlBWW9BZ3dnQlVFQUlBUVFPd3dCQ3lBSElBVWdCa0VRYWhCRUN5QUZRUUZHQkVBZ0JrRUlha0VCRURwQkFBd0JDeUFHUVFocUlBb1FPa0VCQ3lFRklBWWdCaWdDQ0VFQmNpSUlOZ0lJSUFkQkNHb2lCeUFEU1EwQUN5QUdLQUlNQ3lFRElBY2dDQ0FESUFWQkFDQUdRUkJxRURzZ0JpZ0NEQ0VFSUFZb0FnZ2hDQUpBSUFWQkFVY05BQ0FJUVFGSERRQWdCRVVOQVFzRFFBSi9JQVZCQVV3RVFDQUdRUWhxSUFnZ0JCQjNJZ01RUENBRElBVnFEQUVMSUFaQkNHb2lBMEVDRURvZ0JpQUdLQUlJUVFkek5nSUlJQU5CQVJBOElBZEJDR3NpQ2lBR1FSQnFJZ1FnQlVFQ2F5SUlRUUowYWlnQ0FHc2dCaWdDQ0NBR0tBSU1JQVZCQVd0QkFTQUVFRHNnQTBFQkVEb2dCaUFHS0FJSVFRRnlJZ00yQWdnZ0NpQURJQVlvQWd3Z0NFRUJJQVFRT3lBSUN5RUZJQWRCQ0dzaEJ5QUdLQUlNSVFRZ0JpZ0NDQ0VJSUFWQkFVY05BQ0FJUVFGSERRQWdCQTBBQ3dzZ0JrSFFBV29rQUFzZ0FDZ0NnQUVoQTBFQUlRVUNRQU5BQW44Q1FDQURRUUZIRFFBZ0FDZ0NoQUZCQVVjTkFDQUFLQUswQVNnQzNDdEZEUUFnQ1VFQU5nSklJQUJCQURZQzVBRWdBQ0FBS0FJSVFZQUJjallDQ0VFQURBRUxRUUFoQXlBQUlBbEJ5QUJxUVFBZ0NVSEVBR29nQ1VGQWF5QUpRVHhxSUFsQk9Hb2dDVUUwYWlBSlFjd0FhaUFCSUFJUUxFVU5BeUFKS0FKTVJRMENJQWtvQWtnTElnWkJBV29oQXlBQUlBWkJBRUVBSUFFZ0FoQXhJQUFvQW9BQklBQW9Bb1FCYkNFSFJRUkFJQWtnQnpZQ0JDQUpJQU0yQWdBZ0FrRUJRY3c2SUFrUUUwRUFJUU1NQXdzZ0NTQUhOZ0lrSUFrZ0F6WUNJQ0FDUVFSQjd0c0FJQWxCSUdvUUV5QUFLQUxvQVNBQUtBSmtLQUlZRUlBQlJRUkFRUUFoQXd3REN3SkFBa0FnQUNnQ2dBRkJBVWNOQUNBQUtBS0VBVUVCUncwQUlBQW9BbVFpQnlnQ0FDQUFLQUpnSWdRb0FnQkhEUUVnQnlnQ0JDQUVLQUlFUncwQklBY29BZ2dnQkNnQ0NFY05BU0FIS0FJTUlBUW9BZ3hIRFFFTElBQW9BclFCSUFaQmpDeHNhaUlIS0FMY0t5SUVSUTBBSUFRUUZDQUhRZ0EzQXR3ckN5QUpJQU0yQWhBZ0FrRUVRYlNCQVNBSlFSQnFFQk1nQVNrRENDSVNVQVIrUWdBRklCSWdBU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUlMSUFWQkFXb2lCU0FBS0FLQUFTSURJQUFvQW9RQmJFWU5BU0FBS0FKVUlnZEZEUUFnQUNnQ1VDQUhSdzBBQ3lBQklCRWdBaUFCS0FJc0VRd0FHZ3NnQUNBQ0VIOGhBd3NnQ1VIUUFHb2tBQ0FEQzdjR0FReC9JQUFvQW1BaENRSkFJQUFvQW9BQklBQW9Bb1FCYkNJTUJFQWdDU2dDRUNJQlFiZ0liQ0VOSUFFZ0FXeEJBblFoQ2lBQUtBSU1JUVFnQUNnQ3RBRWhBd05BSUFNb0F0QXJJUXNnQXlBRVFZd3NFQllpQVVFQU5nTG9LeUFCUVg4MkF0UXJJQUZCQURZQ3NDZ2dBVUVBTmdLRUxDQUJRUUEyQXZBcklBRkNBRGNDK0NzZ0FTQUxOZ0xRS3lBQklBRXRBSWdzUWZ3QmNUb0FpQ3dnQkNnQzZDc0VRQ0FCSUFvUUdDSUROZ0xvS3lBRFJRUkFRUUFQQ3lBRElBUW9BdWdySUFvUUZob0xJQUVnQkNnQytDdEJGR3dpQlJBWUlnTTJBdkFyUVFBaENDQURSUTBDSUFNZ0JDZ0M4Q3NnQlJBV0dpQUVLQUwwS3lJR0JFQWdCQ2dDOENzaEF5QUJLQUx3S3lFRlFRQWhCd05BSUFNb0Fnd0VRQ0FGSUFNb0FoQVFHQ0lHTmdJTUlBWkZCRUJCQUE4TElBWWdBeWdDRENBREtBSVFFQllhSUFRb0F2UXJJUVlMSUFFZ0FTZ0MrQ3RCQVdvMkF2Z3JJQVZCRkdvaEJTQURRUlJxSVFNZ0IwRUJhaUlISUFaSkRRQUxDeUFCSUFRb0FvUXNRUlJzSWdVUUdDSUROZ0w4S3lBRFJRMENJQU1nQkNnQy9Dc2dCUkFXR2lBQklBUW9Bb1FzSWdnMkFvUXNJQWdFUUNBRUtBTDhLeUVESUFFb0F2d3JJUVZCQUNFSEEwQWdBeWdDQ0NJR0JFQWdCU0FCS0FMd0t5QUdJQVFvQXZBcmEybzJBZ2dMSUFNb0Fnd2lCZ1JBSUFVZ0FTZ0M4Q3NnQmlBRUtBTHdLMnRxTmdJTUN5QUZRUlJxSVFVZ0EwRVVhaUVESUFkQkFXb2lCeUFJUncwQUN3c2dDeUFFS0FMUUt5QU5FQllhSUFGQmpDeHFJUU1nRGtFQmFpSU9JQXhIRFFBTEMwRUJJUWdnQUFKL1FRQkJBVUhJQUJBWElnRkZEUUFhSUFFZ0FTMEFLRUgrQVhGQkFYSTZBQ2dnQVVFQlFRUVFGeUlFTmdJVUlBRWdCQTBBR2lBQkVCUkJBQXNpQVRZQzZBRWdBVVVFUUVFQUR3c2dBQ2dDN0FFaEJVRUFJUVFnQVNBQVFlZ0FhallDSENBQklBazJBaGhCQVVIUUJoQVhJUU1nQVNnQ0ZDQUROZ0lBQWtBZ0EwVU5BQ0FKS0FJUVFjd0FFQmNoQXlBQktBSVVLQUlBSWdjZ0F6WUNGQ0FEUlEwQUlBY2dDU2dDRURZQ0VDQUFLQUs4QVNFRUlBRWdCVFlDTENBQklBUTJBZ0JCQVNFRUN5QUVEUUFnQUNnQzZBRVFYa0VBSVFnZ0FFRUFOZ0xvQVNBQ1FRRkJyeHhCQUJBVEN5QUlDNVFYQXd0L0FYNEJmU01BUVRCcklnb2tBQ0FBUVFFMkFnZ0Nmd0pBQWtBZ0FTQUtRU2hxSWdOQkFpQUNFQjFCQWtjTkFDQURJQXBCTEdwQkFoQVZJQW9vQWl4QnovNERSdzBBSUFCQkFqWUNDQ0FBS0FMZ0FTQUJLUU00UWdKOUlnNDNBd0FnQ2lBT053TVFJQUpCQkVHODR3QWdDa0VRYWhBVElBQW9BdUFCSWdjcEF3QWhEaUFIS0FJWUlnVkJBV29pQXlBSEtBSWdJZ1JOQkVBZ0J5Z0NIQ0VFREFJTElBY0NmeUFFczBNQUFNaENraUlQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNpQXpZQ0lDQUhLQUljSUFOQkdHd1FHeUlFQkVBZ0J5QUVOZ0ljSUFjb0FoZ2lCVUVCYWlFRERBSUxJQWNvQWh3UUZDQUhRUUEyQWlBZ0IwSUFOd01ZSUFKQkFVR1dIa0VBRUJNTElBSkJBVUdEK2dCQkFCQVRRUUFNQVFzZ0JDQUZRUmhzYWlJRVFRSTJBaEFnQkNBT3hEY0RDQ0FFUWMvK0F6c0JBQ0FISUFNMkFoZ2dBU0FBS0FJUVFRSWdBaEFkUVFKSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFFTElBQW9BaEFnQ2tFb2FrRUNFQlVDUUFKQUlBb29BaWdpQkVHUS93TkhCRUFEUUVHZ3dnRWhCU0FFUWYvOUEwMEVRQ0FLSUFRMkFnQWdBa0VCUWJjUklBb1FFMEVBREFVTEEwQWdCU0lES0FJQUlnY0VRQ0FEUVF4cUlRVWdCQ0FIUncwQkN3c0NRQUpBSUFjTkFFRUNJUVlnQWtFQ1FlSWRRUUFRRTBHREV5RUZBa0FDUUNBQklBQW9BaEJCQWlBQ0VCMUJBa2NOQUFOQUlBQW9BaEFnQ2tFc2FrRUNFQlZCb01JQklRY2dDaWdDTENJRVFZRCtBMDhFUUFOQUlBY2lBeWdDQUNJSUJFQWdBMEVNYWlFSElBUWdDRWNOQVFzTElBTW9BZ1FnQUNnQ0NIRkZCRUJCOENraEJRd0RDeUFJQkVBZ0NFR1Evd05HQkVBZ0NrR1Evd00yQWlnTUJ3c2dBU2tET0NFT0lBQW9BdUFCSWdjb0FoZ2lBMEVCYWlJRUlBY29BaUFpQlUwRVFDQUhLQUljSVFVTUJRc2dCd0ovSUFXelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRE5nSWdJQWNvQWh3Z0EwRVliQkFiSWdVRVFDQUhJQVUyQWh3Z0J5Z0NHQ0lEUVFGcUlRUU1CUXNnQnlnQ0hCQVVJQWRCQURZQ0lDQUhRZ0EzQXhoQmxoNGhCUXdEQ3lBR1FRSnFJUVlMSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSZzBBQ3dzZ0FrRUJJQVZCQUJBVElBSkJBVUhTekFCQkFCQVRRUUFNQndzZ0JTQURRUmhzYWlJRElBWTJBaEFnQXlBT3B5QUdhNnczQXdnZ0EwRUFPd0VBSUFjZ0JEWUNHQ0FLSUFnMkFpaEJvTUlCSVFRRFFDQUVJZ01vQWdBaUIwVU5BU0FEUVF4cUlRUWdCeUFJUncwQUN3c2dBeWdDQkNBQUtBSUljVVVFUUNBQ1FRRkI4Q2xCQUJBVFFRQU1CZ3NnQVNBQUtBSVFRUUlnQWhBZFFRSkhCRUFnQWtFQlFZTVRRUUFRRTBFQURBWUxJQUFvQWhBZ0NrRWtha0VDRUJVZ0NpZ0NKQ0lFUVFGTkJFQWdBa0VCUVpVdlFRQVFFMEVBREFZTElBb2dCRUVDYXlJRk5nSWtJQUFvQWhBaEJDQUFLQUlVSUFWSkJFQWdCQ0FGRUJzaUJFVUVRQ0FBS0FJUUVCUWdBRUlBTndNUUlBSkJBVUhJSmtFQUVCTkJBQXdIQ3lBQUlBUTJBaEFnQUNBS0tBSWtJZ1UyQWhRTElBRWdCQ0FGSUFJUUhTSUVJQW9vQWlSSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFZTElBQWdBQ2dDRUNBRUlBSWdBeWdDQ0JFQkFFVUVRQ0FDUVFGQmxSTkJBQkFUUVFBTUJnc2dBU2tET0NFT0lBb29BaVFoQ0FKQUlBQW9BdUFCSWdNb0FoZ2lCa0VCYWlJRklBTW9BaUFpQkUwRVFDQURLQUljSVFRTUFRc2dBd0ovSUFTelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRU5nSWdJQU1vQWh3Z0JFRVliQkFiSWdSRkRRVWdBeUFFTmdJY0lBTW9BaGdpQmtFQmFpRUZDeUFFSUFaQkdHeHFJZ1FnQ0VFRWFqWUNFQ0FFSUE2bklBaHJRUVJyckRjRENDQUVJQWM3QVFBZ0F5QUZOZ0lZSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSd1JBSUFKQkFVR0RFMEVBRUJOQkFBd0dDMEVCSUF3Z0IwSGMvZ05HR3lFTVFRRWdDU0FIUWRMK0EwWWJJUWxCQVNBTElBZEIwZjREUmhzaEN5QUFLQUlRSUFwQktHcEJBaEFWSUFvb0FpZ2lCRUdRL3dOSERRRUxDeUFMRFFFTElBSkJBVUdNSlVFQUVCTkJBQXdDQ3lBSlJRUkFJQUpCQVVHNkpVRUFFQk5CQUF3Q0N5QU1SUVJBSUFKQkFVSG9KVUVBRUJOQkFBd0NDMEVBSVFOQkFDRUZRUUFoQ1NNQVFSQnJJZ2NrQUVFQklRd0NRQ0FBTFFEVUFVRUJjVVVOQUFKQUlBQW9Bb2dCSWdaRkRRQUNRQU5BSUFBb0Fvd0JJQWxCQTNScUlnUW9BZ0FpQ3dSQUlBTWdCQ2dDQkNJSWF5SUVRUUFnQXlBRVR4c2hCQ0FESUFoSkJFQWdDQ0FEYXlFR0lBTWdDMm9oQ0FOQUlBWkJCRWtFUUVHQ0xDRUREQVVMSUFnZ0IwRU1ha0VFRUJVZ0J5Z0NEQ0lEUVg5eklBVkpCRUJCNkNzaEF3d0ZDeUFESUFaQkJHc2lDMnNnQkNBRElBdExJZzBiSVFRZ0F5QUZhaUVGSUFzZ0Eyc2hCaUFJUVFBZ0F5QU5HMnBCQkdvaENDQURJQXRKRFFBTElBQW9Bb2dCSVFZTElBUWhBd3NnQ1VFQmFpSUpJQVpKRFFBTElBTkZEUUZCQUNFTUlBSkJBVUhXRjBFQUVCTU1BZ3RCQUNFTUlBSkJBU0FEUVFBUUV3d0JDeUFBSUFVUUdDSUROZ0tnQVNBRFJRUkFRUUFoRENBQ1FRRkJ6Q0ZCQUJBVERBRUxJQUFnQlRZQ2xBRWdBQ2dDakFFaEJnSkFJQUFvQW9nQklnZ0VRRUVBSVFWQkFDRURRUUFoQkFOQUlBWWdCRUVEZENJTGFpSU5LQUlBSWdrRVFDQUFLQUtnQVNBRGFpRUlBbjhnRFNnQ0JDSUdJQVZOQkVBZ0NDQUpJQVlRRmhvZ0F5QUdhaUVESUFVZ0Jtc01BUXNnQ0NBSklBVVFGaG9nQXlBRmFpRURJQVlnQldzaEJpQUZJQWxxSVFVRFFDQUdRUVJKRFFVZ0JTQUhRUWhxUVFRUUZTQUZRUVJxSVFVZ0FDZ0NvQUVnQTJvaENTQUdRUVJySWdZZ0J5Z0NDQ0lJU1FSQUlBa2dCU0FHRUJZYUlBTWdCbW9oQXlBSEtBSUlJQVpyREFJTElBa2dCU0FJRUJZYUlBY29BZ2dpQ1NBRGFpRURJQVVnQ1dvaEJTQUdJQWxySWdZTkFBdEJBQXNoQlNBQUtBS01BU0FMYWlnQ0FCQVVJQUFvQW93QklnWWdDMnBDQURjQ0FDQUFLQUtJQVNFSUN5QUVRUUZxSWdRZ0NFa05BQXNnQUNnQ2xBRWhCU0FBS0FLZ0FTRURDeUFBSUFVMkFxZ0JJQUFnQXpZQ2tBRWdBRUVBTmdLSUFTQUdFQlFnQUVFQU5nS01BUXdCQzBFQUlRd2dBa0VCUVlJc1FRQVFFd3NnQjBFUWFpUUFJQXhGQkVBZ0FrRUJRZkErUVFBUUUwRUFEQUlMSUFKQkJFSEYyd0JCQUJBVElBQW9BdUFCSUFFcEF6aEMvdi8vL3c5OFF2Ly8vLzhQZ3pjRENFRUFJUUZCQUNFR0l3QkJFR3NpQnlRQUFrQWdBQ2dDUkNJRVJRUkFJQUJCQVRZQ1RBd0JDeUFBS0FKTURRQWdBQ2dDU0NFRElBQW9BdUFCSWd3b0FpZ2hCU0FFUVFGSEJFQWdCRUYrY1NFSUEwQWdCU0FESUFGQkEzUnFJZ3N2QVFBaURVRW9iR29pQ1NBTk5nSUFJQWtnQ1NnQ0NFRUJhallDQ0NBRklBc3ZBUWdpQzBFb2JHb2lDU0FMTmdJQUlBa2dDU2dDQ0VFQmFqWUNDQ0FCUVFKcUlRRWdCa0VDYWlJR0lBaEhEUUFMQ3lBRVFRRnhCRUFnQlNBRElBRkJBM1JxTHdFQUlnWkJLR3hxSWdFZ0JqWUNBQ0FCSUFFb0FnaEJBV28yQWdnTEFrQWdEQ2dDSkNJR0JFQkJBQ0VCQTBBZ0JTQUJRU2hzYWlnQ0NFVUVRQ0FISUFFMkFnQWdBa0VCUWJQSUFDQUhFQk1NQXdzZ0FVRUJhaUlCSUFaSERRQUxDeUFNS1FNSUlRNUJBQ0VGQTBBQ1FDQUFLQUxnQVNnQ0tDQURJQVZCQTNRaURHb3ZBUUJCS0d4cUlnRW9BaEFpQmtVRVFDQUJJQUVvQWdoQkdCQVhJZ1kyQWhBZ0JrVU5BU0FBS0FKRUlRUWdBQ2dDU0NFREN5QUdJQUVvQWdRaUNVRVliR29pQmlBT053TUFJQVlnRGlBRElBeHFOUUlFZkNJT053TVFJQUVnQ1VFQmFqWUNCQ0FGUVFGcUlnVWdCRWtOQVF3REN3c2dBa0VCUWIwMVFRQVFFd3NnQUVFQk5nSk1JQUFvQWtSRkRRQWdBQ2dDNEFFb0FpZ2hBMEVBSVFFRFFDQURJQUFvQWtnZ0FVRURkR292QVFCQktHd2lBbW9pQTBFQU5nSUlJQU1vQWhBUUZDQUFLQUxnQVNnQ0tDSURJQUpxUVFBMkFoQWdBVUVCYWlJQklBQW9Ba1JKRFFBTEN5QUhRUkJxSkFBZ0FFRUlOZ0lJUVFFTUFRc2dBeWdDSEJBVUlBTkJBRFlDSUNBRFFnQTNBeGdnQWtFQlFaWWVRUUFRRTBFQUN5QUtRVEJxSkFBTEhBQWdBQ2dDQ0VVZ0FDZ0MyQUZCQUVjZ0FDZ0MzQUZCQUVkeGNRc0VBRUVBQ3lRQUFrQWdBRVVOQUNBQUlBRTJBdEFCSUFGRkRRQWdBQ0FBTFFCY1FRaHlPZ0JjQ3d1UEFRRUVmeUFBS0FJWUlnRUVRQ0FBS0FJY0lnTkJORzRoQkNBRFFUUlBCSDlCQUNFREEwQWdBU2dDQUNJQ0JFQWdBa0VCYXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lDQkVBZ0FoQVVJQUZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFVSUFGQkFEWUNDQXNnQVVFMGFpRUJJQU5CQVdvaUF5QUVSdzBBQ3lBQUtBSVlCU0FCQ3hBVUlBQkJBRFlDR0FzTGlBRUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSUNRY1FBYmlFRUlBSkJ4QUJQQkg5QkFDRUNBMEFnQVNnQ0FDSURCRUFnQXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lEQkVBZ0F4QVVJQUZCQURZQ0JBc2dBU2dDUEJBVUlBRkJBRFlDUENBQlFjUUFhaUVCSUFKQkFXb2lBaUFFUncwQUN5QUFLQUlZQlNBQkN4QVVJQUJCQURZQ0dBc0xQd0VCZnlBQUJFQWdBQ2dDZENJQkJFQWdBUkFVSUFCQkFEWUNkQXNnQUNnQ2VDSUJCRUFnQVJBVUlBQkJBRFlDZUFzZ0FDZ0NsQUVRRkNBQUVCUUxDOFNaQlFSRmZ3SjdCSDRCZlNNQVFlQUFheUltSkFBZ0FDZ0NDQ0VhQWtBQ1FBSkFBa0FnQUNnQ0FFVUVRQ0FhSUJvb0FoQWdHaWdDQ0dzZ0dpZ0NGQ0FhS0FJTWEyeEJBblFpQmhBY0lnVTJBandnQlVVRVFDQUFLQUlrR2lBQUtBSWdRUUZCc2o1QkFCQVRJQUFvQWlRYUlBQkJIR29oQlF3REN5QUZRUUFnQmhBWkdnd0JDeUFhS0FJOElnVkZEUUFnQlJBVUlCcEJBRFlDUEFzZ0FDZ0NFQ0l5S0FJY0lESW9BaGhCbUFGc2FpSUZRWmdCYXlnQ0FDRTJJQVZCa0FGcktBSUFJVGNnQUNnQ0ZDRXZJQUFvQWd3aE1DQUFLQUlFSVRnZ0FDZ0NIQ2dDQUVVTkFpQUFRUnhxSVFVQ1FBSi9RUUFnQVNnQ0JDSUhRUUJNRFFBYUlBRW9BZ0FoQ0VFQUlRWUNRQU5BSUFnZ0JrRU1iR29pQkNnQ0FFVU5BU0FHUVFGcUlnWWdCMGNOQUF0QkFBd0JDeUFFS0FJRUN5SUREUUJCQVVHY0FSQVhJZ05GQkVBZ0FDZ0NJRUVCUVlReFFRQVFFd3dDQ3lBRFFRQTJBb3dCQW45QkFDRUdRUUFnQVNnQ0JDSUhRZi8vLy84SFJnMEFHaUFCS0FJQUlRZ2dCMEVBU2dSQUEwQWdDQ0FHUVF4c2FpSUVLQUlBUlFSQUlBUW9BZ2dpQndSL0lBUW9BZ1FnQnhFQ0FDQUJLQUlBQlNBSUN5QUdRUXhzYWlJQlFRODJBZ2dnQVNBRE5nSUVRUUVNQXdzZ0JrRUJhaUlHSUFkSERRQUxDMEVBSUFnZ0IwRU1iRUVNYWhBYklnWkZEUUFhSUFFZ0JqWUNBQ0FHSUFFb0FnUWlCMEVNYkdvaUJrRVBOZ0lJSUFZZ0F6WUNCQ0FHUVFBMkFnQWdBU0FIUVFGcU5nSUVRUUVMRFFBZ0FDZ0NJRUVCUWUzQUFFRUFFQk1nQXlnQ2RDSUJCRUFnQVJBVUlBTkJBRFlDZEFzZ0F5Z0NlQ0lCQkVBZ0FSQVVJQU5CQURZQ2VBc2dBeWdDbEFFUUZDQURFQlFNQVFzZ0F5QUFLQUlZTmdLUUFTQUFLQUlvSVNzZ0FDZ0NKQ0VpSUFBb0FpQWhIU0F2S0FLb0JpRVRJREFvQWhBaEFRSkFBa0FnTHlnQ0VDSVhRY0FBY1FSQUlCY2hDaU1BUWJBQ2F5SVFKQUFDUUNBVEJFQWdJZ1JBSUIxQkFVSHVHRUVBRUJNTUFnc2dIVUVCUWU0WVFRQVFFd3dCQ3lBREtBSjBJUUlDUUFKQUlCb29BaFFnR2lnQ0RHc2lCaUFhS0FJUUlCb29BZ2hySWdsc0lnRWdBeWdDaEFGTEJFQWdBaEFVSUFNZ0FVRUNkQ0lURUJ3aUFqWUNkQ0FDUlFSQVFRQWhBZ3dFQ3lBRElBRTJBb1FCREFFTElBSkZEUUVnQVVFQ2RDRVRDeUFDUVFBZ0V4QVpHZ3NnQXlnQ2VDRUNBa0FnQXlnQ2lBRkJ6eFJMRFFBZ0FoQVVJQU5Cd05JQUVCd2lBallDZUNBQ0RRQkJBQ0VDREFFTElBTkIwQlEyQW9nQklBSkJBRUhBMGdBUUdSb2dBeUFHTmdLQUFTQURJQWsyQW53Z0dpZ0NHQ0lFUlFSQVFRRWhBZ3dCQ3lBYUtBSWNJUTFCQVNFQ0FrQUNRQUpBQWtBQ1FDQWFLQUkwSWdFRVFDQWFLQUlFSVFoQkFDRUNRUUFoQ1FKQUlBRkJCRThFUUNBQlFYeHhJUWxCQUNFSEEwQWdDQ0FIUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0IwRUVhaUlISUFsSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFJZ0FTQUpSZzBCQ3dOQUlBZ2dDVUVEZEdvb0FnUWdBbW9oQWlBSlFRRnFJZ2tnQVVjTkFBc0xJQUZCQVVZRVFDQURLQUtRQVVVTkJRc2dBaUFES0FLWUFVME5BU0FES0FLVUFTQUNFQnNpRXcwQ1FRQWhBZ3dHQ3lBREtBS1FBVVVOQlFzZ0F5Z0NsQUVpRXcwQlFRQWhBZ3dFQ3lBRElBSTJBcGdCSUFNZ0V6WUNsQUVMSUJvb0FqUkZCRUJCQUNFQ0RBSUxJQm9vQWdRaEIwRUFJUUpCQUNFSkEwQWdBaUFUYWlBSElBbEJBM1FpQVdvaUJpZ0NBQ0FHS0FJRUVCWWFJQm9vQWdRaUJ5QUJhaWdDQkNBQ2FpRUNJQWxCQVdvaUNTQWFLQUkwU1EwQUN3d0JDeUFhS0FJRUtBSUFJUk1MUVFBaENVRUFJUWNDZjBFQUlCb29BaWdpQVVVTkFCb2dHaWdDQUNJR0tBSUlJUWRCQUNBQlFRRkdEUUFhSUFZb0FpQUxJUUVnQkNBTmF3SkFJQUVnQjJvaUIwVUVRRUVBSVFSQkFDRUlEQUVMUVFFaENTQWFLQUlBSWdFb0FnQWhCRUVBSVFnZ0IwRUJSZ1JBUVFBaENRd0JDeUFCS0FJWUlRZ0xRUUZxSVJZZ0F5Z0NkQ0VMSUFNb0FuZ2hEaUFhS0FJTUlSVWdHaWdDRkNFUElCb29BZ2doR1NBYUtBSVFJU3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ1VVTkFDQUlEUUFnSWtVTkFTQWRRUUpCa2RRQVFRQVFFMEVCSVFjTUFnc2dCMEVFU1EwQklDSUVRQ0FRSUFjMkFuQWdIVUVCUWRIS0FDQVFRZkFBYWhBVERBZ0xJQkFnQnpZQ1lDQWRRUUZCMGNvQUlCQkI0QUJxRUJOQkFDRUNEQWdMSUIxQkFrR1IxQUJCQUJBVElCb29BaGdpQ1VFZVN3MEJRUUVoR3lBSklCWlBEUU1NQlFzZ0dpZ0NHQ0lCSWdsQkhrME5BU0FpUlEwQUlCQWdBVFlDSUNBZFFRRkI2ZDhBSUJCQklHb1FFd3dGQ3lBUUlBazJBZ0FnSFVFQlFlbmZBQ0FRRUJOQkFDRUNEQVVMSUFrZ0Zra05BU0FIUVFKSkJFQWdCeUViREFFTElBa2dGa2NFUUNBSElSc01BUXRCQVNFYlFkRE5BUzBBQUEwQUlDSkZCRUJCME0wQlFRRTZBQUFnRUNBSE5nSkFJQjFCQWtHVzBBQWdFRUZBYXhBVERBRUxRZEROQVMwQUFFVUVRRUhRelFGQkFUb0FBQ0FRSUFjMkFsQWdIVUVDUVpiUUFDQVFRZEFBYWhBVEN3c0NRQUpBSUFSQkFra05BQ0FDSUFSSkRRQWdCQ0FJYWlBQ1RRMEJDeUFpQkVCQkFDRUNJQjFCQVVHWHlnQkJBQkFUREFVTFFRQWhBaUFkUVFGQmw4b0FRUUFRRXd3RUN3SkFBa0FnQkNBVGFpSVlRUUZyTFFBQUlnRkJCSFFnR0VFQ2F5MEFBRUVQY1hJaUJrRUNTUTBBSUFGQi93RkdEUUFnQkNBR1RnMEJDeUFpQkVCQkFDRUNJQjFCQVVHazl3QkJBQkFUREFVTFFRQWhBaUFkUVFGQnBQY0FRUUFRRXd3RUN5QWFLQUljSVNRQ2Z5QVFRUUEyQXBBQ0lCQkJBRFlDbUFJZ0VFSUFOd09JQWlBUVFnQTNBNmdDSUJCQ0FEY0NuQUlnRUNBR1FRRnJJZ2MyQXBRQ0lCQWdCQ0FUYWlBR2F5SUpOZ0tBQWlBSk1RQUFJVWxCQ0NFQklCQkJDRFlDa0FJZ0VDQUpRUUZxSWdJMkFvQUNJQkFnQmtFQ2F5SU5OZ0tVQWlBUUlFbENENFFnU1NBSFFRRkdHeUpKTndPSUFpQVFJRWxDL3dGUk5nS1lBZ0pBSUFsQkEzRWlCMEVEUmcwQUFrQWdTVUwvQVZJTkFDQUNMUUFBUVk4QlRRMEFRUUFNQWd0Qy93RWhTaUFHUVFOUEJFQWdBakVBQUNGS0N5QVFJQVpCQTJzaUZ6WUNsQUlnRUVFUFFSQWdTVUwvQVZFaUZCc2lBVFlDa0FJZ0VDQUNJQVpCQWt0cUlnazJBb0FDSUJBZ1NrSVBoQ0JLSUExQkFVWWJJa3BDL3dGUk5nS1lBaUFRSUVsQ0IwSUlJQlFiaGlCS2hDSkpOd09JQWlBSFFRSkdEUUJDL3dFaFN3SkFJRXBDL3dGU0RRQWdDUzBBQUVHUEFVME5BRUVBREFJTElBWkJCRThFUUNBSk1RQUFJVXNMSUJBZ0JrRUVheUlDTmdLVUFpQVFJQWtnQmtFRFMyb2lDVFlDZ0FJZ0VDQkxRZytFSUVzZ0YwRUJSaHNpUzBML0FWRTJBcGdDSUJBZ0FVRUhRUWdnU2tML0FWRWlEUnRxSWdFMkFwQUNJQkFnU1VJSFFnZ2dEUnVHSUV1RUlrazNBNGdDSUFkQkFVWU5BQUpBSUV0Qy93RlNEUUFnQ1MwQUFFR1BBVTBOQUVFQURBSUxRdjhCSVVvZ0JrRUZUd1JBSUFreEFBQWhTZ3NnRUNBR1FRVnJOZ0tVQWlBUUlBa2dCa0VFUzJvMkFvQUNJQkFnU2tJUGhDQktJQUpCQVVZYklrcEMvd0ZSTmdLWUFpQVFJQUZCQjBFSUlFdEMvd0ZSSWdrYmFpSUJOZ0tRQWlBUUlFbENCMElJSUFrYmhpQktoQ0pKTndPSUFnc2dFQ0JKUWNBQUlBRnJyWVkzQTRnQ1FRRUxSUVJBSUNJRVFFRUFJUUlnSFVFQlFhblpBRUVBRUJNTUJRdEJBQ0VDSUIxQkFVR3AyUUJCQUJBVERBUUxJQ3NnR1dzaEVpQVFJQVlpRFVFQ2F5SU1OZ0wwQVNBUUlBUWdFMm9pRVVFRGF5SUdOZ0xnQVNBUUlCRkJBbXN0QUFBaUFVR1BBVXNpQnpZQytBRWdFQ0FCUVFSMnJTSkpOd1BvQVNBUVFRTkJCQ0JKUWdlRFFnZFJHeUlVTmdMd0FTQUdRUU54UVFGcUlnRWdEQ0FCSUF4Skd5RVhBa0FDUUNBTVJRUkFRUUFoQWlBUUlBd2dGMnMyQXZRQkRBRUxJQkFnRVVFRWF5SUJOZ0xnQVNBUUlBWXRBQUFpQWtHUEFVc2lDVFlDK0FFZ0VDQUNyU0pLUXY4Qmd5QVVyWVlnU1lRaVNUY0Q2QUVnRUVFSFFRZ2dTa0wvQUlOQy93QlJHMEVJSUFjYklCUnFJaFEyQXZBQkFrQWdGMEVDU1FSQUlBa2hCd3dCQ3lBUUlCRkJCV3NpQ1RZQzRBRWdFQ0FCTFFBQUlnWkJqd0ZMSWdjMkF2Z0JJQkFnQnEwaVNrTC9BWU1nRksyR0lFbUVJa2szQStnQklCQkJDRUVIUVFnZ1NrTC9BSU5DL3dCUkd5QUNRWThCVFJzZ0ZHb2lGRFlDOEFFZ0YwRUNSZ1JBSUFFaEJpQUpJUUVNQVFzZ0VDQVJRUVpySWdJMkF1QUJJQkFnQ1MwQUFDSUJJaUZCandGTElnYzJBdmdCSUJBZ0FhMGlTa0wvQVlNZ0ZLMkdJRW1FSWtrM0ErZ0JJQkJCQ0VFSFFRZ2dTa0wvQUlOQy93QlJHeUFHUVk4QlRSc2dGR29pRkRZQzhBRWdGMEVEUmdSQUlBa2hCaUFDSVFFTUFRc2dFQ0FSUVFkcklnRTJBdUFCSUJBZ0FpMEFBQ0lHUVk4QlN5SUhOZ0w0QVNBUUlBYXRJa3BDL3dHRElCU3RoaUJKaENKSk53UG9BU0FRUVFoQkIwRUlJRXBDL3dDRFF2OEFVUnNnSVVHUEFVMGJJQlJxSWhRMkF2QUJJQUloQmdzZ0VDQU1JQmRySWdrMkF2UUJJQlJCSUVzTkFTQUpRUVJPQkVBZ0JrRUVheWdDQUNFQ0lCQWdCa0VGYXpZQzRBRWdFQ0FKUVFSck5nTDBBUXdCQ3lBSlFRQk1CRUJCQUNFQ0RBRUxJQWxCQVhFQ1FDQVhJQTFCQTJ0R0JFQkJHQ0VYUVFBaEFnd0JDeUFKUWY3Ly8vOEhjU0VoUVJnaEYwRUFJUUlnQVNFR1FRQWhEQU5BSUJBZ0JrRUJheUlnTmdMZ0FTQUdMUUFBSUJBZ0JrRUNheUlCTmdMZ0FTQVFJQWxCQVdzMkF2UUJJQ0F0QUFBaEJpQVFJQWxCQW1zaUNUWUM5QUVnRjNRZ0FuSWdCaUFYUVFocmRISWhBaUFYUVJCcklSY2dBU0VHSUF4QkFtb2lEQ0FoUncwQUN3dEZEUUFnRUNBQlFRRnJOZ0xnQVNBQkxRQUFJQkFnQ1VFQmF6WUM5QUVnRjNRZ0FuSWhBZ3NnRUNBQ1FmOEJjU0lCUVk4QlN6WUMrQUVnRUVFSFFRZ2dBa0dBZ0lENEIzRkJnSUNBK0FkR0cwRUlJQWNiSWdaQkNFRUhRUWdnQWtHQWdQd0RjVUdBZ1B3RFJoc2dBa0gvLy8vL2VFMGJhaUlKUVFoQkIwRUlJQUpCZ1A0QmNVR0EvZ0ZHR3lBQ1FSQjJRZjhCY1NJSFFZOEJUUnRxSWhkQkNFRUhRUWdnQWtIL0FIRkIvd0JHR3lBQ1FRaDJRZjhCY1NJTVFZOEJUUnNnRkdwcU5nTHdBU0FRSUFjZ0JuUWdBa0VZZG5JZ0RDQUpkSElnQVNBWGRIS3RJQlN0aGlCSmhEY0Q2QUVMSUJCQndBRnFJQk1nQkNBTmEwSC9BUkJrQW45QkFDQWJRUUpKRFFBYUlCQkJvQUZxSUJnZ0NFRUFFR1JCQUNBYlFRSkdEUUFhUWdBaFNVSUFJVXNnRUVFQk5nS1lBU0FRUVFBMkFwQUJJQkJDQURjRGlBRWdFQ0FJUVFGcklnRTJBcFFCSUJBZ0JDQVRhaUFJYWlJR1FRRnJJZ2syQW9BQklBbEJBM0VoRndKQUlBaEJBRXdFUUNBSklRWU1BUXNnRUNBR1FRSnJJZ1kyQW9BQklBa3hBQUFoU1FzZ0VDQkpOd09JQVNBUUlFbENqd0ZXSWhNMkFwZ0JJQkJCQjBFSUlFbEMvd0NEUXY4QVVSc2lEVFlDa0FFQ1FDQVhSUTBBSUJBZ0NFRUNheUlITmdLVUFRSkFJQWhCQWtnRVFDQUdJUUlNQVFzZ0VDQUdRUUZySWdJMkFvQUJJQVl4QUFBaFN3c2dFQ0JMUW84QlZpSVROZ0tZQVNBUUlFc2dEYTJHSUVtRUlrbzNBNGdCSUJCQkNFRUhRUWdnUzBML0FJTkMvd0JSR3lCSlFvOEJXQnNnRFdvaURUWUNrQUVnRjBFQlJnUkFJQUloQmlCS0lVa2dBU0VJSUFjaEFRd0JDeUFRSUFoQkEyc2lCRFlDbEFFQ1FDQUlRUU5JQkVBZ0FpRUpEQUVMSUJBZ0FrRUJheUlKTmdLQUFTQUNNUUFBSVV3TElCQWdURUtQQVZZaUV6WUNtQUVnRUNCTUlBMnRoaUJLaENKSk53T0lBU0FRUVFoQkIwRUlJRXhDL3dDRFF2OEFVUnNnUzBLUEFWZ2JJQTFxSWcwMkFwQUJJQmRCQWtZRVFDQUpJUVlnQnlFSUlBUWhBUXdCQ3lBUUlBaEJCR3NpQVRZQ2xBRkNBQ0ZMQWtBZ0NFRUVTQVJBSUFraEJnd0JDeUFRSUFsQkFXc2lCallDZ0FFZ0NURUFBQ0ZMQ3lBUUlFdENqd0ZXSWhNMkFwZ0JJQkFnU3lBTnJZWWdTWVFpU1RjRGlBRWdFRUVJUVFkQkNDQkxRdjhBZzBML0FGRWJJRXhDandGWUd5QU5haUlOTmdLUUFTQUVJUWdMSUExQklFMEVRQUpBSUFoQkJVNEVRQ0FHUVFOcktBSUFJUUlnRUNBSVFRVnJOZ0tVQVNBUUlBWkJCR3MyQW9BQkRBRUxRUUFoQWlBSVFRSklEUUJCR0NFSUEwQWdFQ0FHUVFGcklnazJBb0FCSUFZdEFBQWdFQ0FCUVFGcklnYzJBcFFCSUFoMElBSnlJUUlnQVVFQlN5QUpJUVlnQ0VFSWF5RUlJQWNoQVEwQUN3c2dFQ0FDUWY4QmNTSUJRWThCU3pZQ21BRWdFRUVIUVFnZ0FrR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlCTWJJZ1pCQ0VFSFFRZ2dBa0dBZ1B3RGNVR0FnUHdEUmhzZ0FrSC8vLy8vZUUwYmFpSUpRUWhCQjBFSUlBSkJnUDRCY1VHQS9nRkdHeUFDUVJCMlFmOEJjU0lIUVk4QlRSdHFJZ2hCQ0VFSFFRZ2dBa0gvQUhGQi93QkdHeUFDUVFoMlFmOEJjU0lFUVk4QlRSc2dEV3BxTmdLUUFTQVFJQWNnQm5RZ0FrRVlkbklnQkNBSmRISWdBU0FJZEhLdElBMnRoaUJKaERjRGlBRUxRUUVMSVRNZ0R5QVZheUVoSUJaQkFXb2hMQ0FPUVFBNkFNQVFJQTVCd0JCcUlSWWdFRUdBQW1vUUxTRUVJQkpCQUVvRVFDQWtRUUZySVJFZ0RpRUdJQlloQjBFQUlSTWdDeUVCUVFBaEZ3TkFJQmNoRFNBVFFRaDBJQkJCNEFGcUVEVkIvd0J4UVFGMGNrSGdnUUZxTHdFQUlRa0NRQ0FURFFBZ0NVRUFJQVJCQW1zaUFrRi9SaHNoQ1NBRVFRRktCRUFnQWlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnRUNrRDZBRWdFQ2dDOEFFZ0JpQUdLQUlBSUFsQkJIWWlGVUVEY1NBSlFRSjJRVEJ4Y2lBamRISWlGRFlDQUNBSlFRVjJRUWR4SUFsQkVIRWlEMEVFZG5JaEV5QUpRUWR4SWdKcklSY2dBcTJJSWttbklRaEJBQ0VDSUJJZ0RVRUNja29FUUNBVFFRaDBJQWhCL3dCeFFRRjBja0hnZ1FGcUx3RUFJUUlDUUNBVERRQWdBa0VBSUFSQkFtc2lDRUYvUmhzaEFpQUVRUUZLQkVBZ0NDRUVEQUVMSUJCQmdBSnFFQzBoQkFzZ0FrRUVka0VCY1NBQ1FRVjJRUWR4Y2lFVElCY2dBa0VIY1NJSWF5RVhJRWtnQ0sySUlrbW5JUWdMSUFZZ0FrRUNkRUdBQm5FZ0FrRXdjWElnSTBFRWFuUWdGSEkyQWdBQ1FDQUNRUUoyUVFKeElBbEJBM1pCQVhGeUloUkJBMGNOQUVFRVFRTWdCRUVDYXlJTVFYOUdHeUVVSUFSQkFVb0VRQ0FNSVFRTUFRc2dFRUdBQW1vUUxTRUVDd0ovSUJSRkJFQWdFRUtCZ0lDQUVEY0NlRUVBREFFTElCUkJBazBFUUNBUVFRRWdDRUVIY1VHVW9nRnFMUUFBSWd4QkJYWkJmeUFNUVFKMlFRZHhJaGgwUVg5eklBZ2dERUVEY1NJSWRuRnFRUUZxSWd3Z0ZFRUJSaUlVR3pZQ2ZDQVFJQXhCQVNBVUd6WUNlQ0FJSUJocURBRUxJQWdnQ0VFSGNVR1VvZ0ZxTFFBQUlneEJBM0VpR0hZaENDQVVRUU5HQkVBZ0RFRUZka0VCYWlFVUlCaEJBMFlFUUNBUUlBaEJBWEZCQW5JMkFud2dFQ0FVUVg4Z0RFRUNka0VIY1NJTWRFRi9jeUFJUVFGMmNXbzJBbmdnREVFRWFnd0NDeUFRSUJRZ0NDQUlRUWR4UVpTaUFXb3RBQUFpQ0VFRGNTSWdkaUlsUVg4Z0RFRUNka0VIY1NJTWRFRi9jM0ZxTmdKNElCQkJmeUFJUVFKMlFRZHhJaFIwUVg5eklDVWdESFp4SUFoQkJYWnFRUUZxTmdKOElBd2dHR29nSUdvZ0ZHb01BUXNnRUNBSUlBaEJCM0ZCbEtJQmFpMEFBQ0lJUVFOeElpQjJJaVZCZnlBTVFRSjJRUWR4SWhSMFFYOXpjU0FNUVFWMmFrRURhallDZUNBUVFYOGdDRUVDZGtFSGNTSU1kRUYvY3lBbElCUjJjU0FJUVFWMmFrRURhallDZkNBWUlDQnFJQlJxSUF4cUN5RUlBa0FnTENBUUtBSjRJaFJQQkVBZ0VDZ0NmQ0lNSUN4TkRRRUxJQ0lFUUVFQUlRSWdIVUVCUWVmNkFFRUFFQk1NQnd0QkFDRUNJQjFCQVVIbitnQkJBQkFUREFZTElCQWdGeUFJYXpZQzhBRWdFQ0JKSUFpdGlEY0Q2QUVnQWtId0FYRWdGVUVQY1hKQi93RkIvd0VnRFVFRWFpSVhJQkpyUVFGMGRpQVNJQmRPR3lJSUlBaEIxUUJ4SUNGQkFVb2JJZ2hCZjNOeEJFQWdJZ1JBUVFBaEFpQWRRUUZCL2Q0QVFRQVFFd3dIQzBFQUlRSWdIVUVCUWYzZUFFRUFFQk1NQmdzQ1FBSkFJQThFUUNBUVFjQUJhaEFmSVJVZ0VDQVFLQUxRQVNBVUlBbEJFM1JCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRlVGL0lCaDBRWDl6Y1NBSlFRaDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVZRUjkwY2lFWURBRUxRUUFoR0NBSVFRRnhSUTBCQ3lBQklCZzJBZ0FMQWtBZ0NVRWdjUVJBSUJCQndBRnFFQjhoRlNBUUlCQW9BdEFCSUJRZ0NVRVNkRUVmZFdvaUdHczJBdEFCSUJBZ0VDa0R5QUVnR0sySU53UElBU0FCSUJKQkFuUnFJQlZCZnlBWWRFRi9jM0VnQ1VFSmRrRUJjU0FZZEhKQkFYSWlHRUVDYWlBUmRDQVZRUjkwY2pZQ0FDQUhRU0FnR0dkckloZ2dCeTBBQUVIL0FIRWlGU0FWSUJoSkcwR0FBWEk2QUFBTUFRc2dDRUVDY1VVTkFDQUJJQkpCQW5ScVFRQTJBZ0FMSUFGQkJHb2hGUUpBQWtBZ0NVSEFBSEVFUUNBUVFjQUJhaEFmSVE4Z0VDQVFLQUxRQVNBVUlBbEJFWFJCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRDBGL0lCaDBRWDl6Y1NBSlFRcDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVBRUjkwY2lFWURBRUxRUUFoR0NBSVFRUnhSUTBCQ3lBVklCZzJBZ0FMSUFkQkFEb0FBUUpBSUFsQmdBRnhCRUFnRUVIQUFXb1FIeUVZSUJBZ0VDZ0MwQUVnRkNBSlFSQjBRUjkxYWlJVWF6WUMwQUVnRUNBUUtRUElBU0FVcllnM0E4Z0JJQlVnRWtFQ2RHb2dHRUYvSUJSMFFYOXpjU0FKUVF0MlFRRnhJQlIwY2tFQmNpSUpRUUpxSUJGMElCaEJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUJEQUVMSUFoQkNIRkZEUUFnRlNBU1FRSjBha0VBTmdJQUN5QUJRUWhxSVFrQ1FBSkFJQUpCRUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRTNSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUWgyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRUkJ4UlEwQkN5QUpJQlEyQWdBTEFrQWdBa0VnY1FSQUlCQkJ3QUZxRUI4aEdDQVFJQkFvQXRBQklBd2dBa0VTZEVFZmRXb2lGR3MyQXRBQklCQWdFQ2tEeUFFZ0ZLMklOd1BJQVNBSklCSkJBblJxSUJoQmZ5QVVkRUYvYzNFZ0FrRUpka0VCY1NBVWRISkJBWElpQ1VFQ2FpQVJkQ0FZUVI5MGNqWUNBQ0FIUVNBZ0NXZHJJZ2tnQnkwQUFVSC9BSEVpRkNBSklCUkxHMEdBQVhJNkFBRU1BUXNnQ0VFZ2NVVU5BQ0FKSUJKQkFuUnFRUUEyQWdBTElBRkJER29oQ1FKQUFrQWdBa0hBQUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRVhSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUXAyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRY0FBY1VVTkFRc2dDU0FVTmdJQUN5QUhRUUpxSWdkQkFEb0FBQUpBSUFKQmdBRnhCRUFnRUVIQUFXb1FIeUVVSUJBZ0VDZ0MwQUVnRENBQ1FSQjBRUjkxYWlJSWF6WUMwQUVnRUNBUUtRUElBU0FJcllnM0E4Z0JJQWtnRWtFQ2RHb2dGRUYvSUFoMFFYOXpjU0FDUVF0MlFRRnhJQWgwY2tFQmNpSUpRUUpxSUJGMElCUkJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUFEQUVMSUFoQmdBRkpEUUFnQ1NBU1FRSjBha0VBTmdJQUN5QWpRUkJ6SVNNZ0JpQU5RUVJ4YWlFR0lBRkJFR29oQVNBU0lCZEtEUUFMQ3lBS1FRaHhJVGtnRGtHd0RHb2hLQ0FPUWFBSWFpRXBJQTVCa0FScUlTVWdJVUVEVGdSQUlCSkJER3doTVNBU1FRTjBJVG9nSkVFQmF5RWdRUU1nSkVFQ2F5SUJkQ0V0UVFFZ0FYUWhMaUFTUVFkcVFRRjJRZnovLy84SGNVRUVhaUU5SUNzZ0dVRi9jMm9pQVVFRGRpSUdRUUowSWo1QkJHb2hPeUFHUVFGcUlqOUIvUC8vL3dOeEloOUJBblFoUENBZlFRTjBJUlVnQVVFWVNTRkFRUUloREFOQUlBd2hFU0FXTFFBQUlSZ2dGa0VBT2dBQUlDTkJiM0ZCQW5NaEl3SkFJQkpCQUV3RVFDQU1RUUpxSVF3TUFRc2dKU0FPSUJGQkJIRWJJUk1nRVVFQ2FpRU1JQXNnRVNBU2JFRUNkR29oQjBFQUlSUWdGaUVCUVFBaEZ3TkFJQmNoRFNBQkxRQUJRUVYyUVFSeElCUWdHRUgvQVhFaUdFRUhkbkp5SWdaQkNIUWdFRUhnQVdvUU5VSC9BSEZCQVhSeVFlQ1JBV292QVFBaENRSkFJQVlOQUNBSlFRQWdCRUVDYXlJR1FYOUdHeUVKSUFSQkFVb0VRQ0FHSVFRTUFRc2dFRUdBQW1vUUxTRUVDeUFRS1FQb0FTQVFLQUx3QVNBVElCTW9BZ0FnQ1VFRWRrRURjU0FKUVFKMlFUQnhjaUFqZEhJaUNEWUNBQ0FKUWNBQWNTSWNRUVYySUFsQmdBRnhJaXBCQm5aeUlSUWdDVUVIY1NJR2F5RUtJQWF0aUNKSnB5RVhRUUFoQWlBU0lBMUJBbkpLQkVBZ0ZDQUJMUUFDUVFWMlFRUnhJQUV0QUFGQkIzWnljaUlHUVFoMElCZEIvd0J4UVFGMGNrSGdrUUZxTHdFQUlRSUNRQ0FHRFFBZ0FrRUFJQVJCQW1zaUJrRi9SaHNoQWlBRVFRRktCRUFnQmlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnQ2lBQ1FRZHhJZ1pySVFvZ0FrRUZkaUFDUVFaMmNrRUNjU0VVSUVrZ0JxMklJa21uSVJjTElCTWdBa0VDZEVHQUJuRWdBa0V3Y1hJZ0kwRUVhblFnQ0hJMkFnQkJBU0VJUVFFaEJnSkFBa0FDUUNBQ1FRSjJRUUp4SUFsQkEzWkJBWEZ5SWc4T0JBSUFBQUVBQzBFQklCZEJCM0ZCbEtJQmFpMEFBQ0lHUVFWMlFYOGdCa0VDZGtFSGNTSWVkRUYvY3lBWElBWkJBM0VpRjNaeGFrRUJhaUlHSUE5QkFVWWlEeHNoQ0NBR1FRRWdEeHNoQmlBWElCNXFJUThNQVFzZ0Z5QVhRUWR4UVpTaUFXb3RBQUFpQmtFRGNTSVhkaUllUVFkeFFaU2lBV290QUFBaUNFRURjU0luSUJkcUlBWkJBblpCQjNFaUYyb2dDRUVDZGtFSGNTSTBhaUVQSUI0Z0ozWWlIa0YvSUJkMFFYOXpjU0FHUVFWMmFrRUJhaUVHUVg4Z05IUkJmM01nSGlBWGRuRWdDRUVGZG1wQkFXb2hDQXNnRUNBS0lBOXJOZ0x3QVNBUUlFa2dENjJJTndQb0FTQUpRZkFCY1NJWElCZEJBV3R4QkVBZ0JpQVlRZjhBY1NJS0lBRXRBQUZCL3dCeEloZ2dDaUFZU3hzaUNrRUNheUlZUVFBZ0NpQVlUeHRxSVFZTElBSkI4QUZ4SWdvZ0NrRUJhM0VFUUNBSUlBRXRBQUZCL3dCeEloZ2dBUzBBQWtIL0FIRWlEeUFQSUJoSkd5SVlRUUpyUVFBZ0dFRUNTeHRxSVFnTElBWWdMRTBnQ0NBc1RYRkZCRUFnSWdSQVFRQWhBaUFkUVFGQnkvc0FRUUFRRXd3SkMwRUFJUUlnSFVFQlFjdjdBRUVBRUJNTUNBc2dBUzBBQWlFWUlBRkJBRHNBQVNBS0lCZEJCSFp5UWY4QlFmOEJJQTFCQkdvaUZ5QVNhMEVCZEhZZ0VpQVhUaHNpQ2tIVkFIRWdDaUFNSUNGS0d5SVBRWDl6Y1FSQUlDSUVRRUVBSVFJZ0hVRUJRZjNlQUVFQUVCTU1DUXRCQUNFQ0lCMUJBVUg5M2dCQkFCQVREQWdMQWtBQ1FDQUpRUkJ4QkVBZ0VFSEFBV29RSHlFZUlCQWdFQ2dDMEFFZ0JpQUpRUk4wUVI5MWFpSUthellDMEFFZ0VDQVFLUVBJQVNBS3JZZzNBOGdCSUI1QmZ5QUtkRUYvYzNFZ0NVRUlka0VCY1NBS2RISkJBWEpCQW1vZ0lIUWdIa0VmZEhJaENnd0JDMEVBSVFvZ0QwRUJjVVVOQVFzZ0J5QUtOZ0lBQ3dKQUlBbEJJSEVFUUNBUVFjQUJhaEFmSVI0Z0VDQVFLQUxRQVNBR0lBbEJFblJCSDNWcUlncHJOZ0xRQVNBUUlCQXBBOGdCSUFxdGlEY0R5QUVnQnlBU1FRSjBhaUFlUVg4Z0NuUkJmM054SUFsQkNYWkJBWEVnQ25SeVFRRnlJZ3BCQW1vZ0lIUWdIa0VmZEhJMkFnQWdBVUVnSUFwbmF5SUtJQUV0QUFCQi93QnhJaDRnQ2lBZVN4dEJnQUZ5T2dBQURBRUxJQTlCQW5GRkRRQWdCeUFTUVFKMGFrRUFOZ0lBQ3lBSFFRUnFJUW9DUUFKQUlCd0VRQ0FRUWNBQmFoQWZJUndnRUNBUUtBTFFBU0FHSUFsQkVYUkJIM1ZxSWg1ck5nTFFBU0FRSUJBcEE4Z0JJQjZ0aURjRHlBRWdIRUYvSUI1MFFYOXpjU0FKUVFwMlFRRnhJQjUwY2tFQmNrRUNhaUFnZENBY1FSOTBjaUVlREFFTFFRQWhIaUFQUVFSeFJRMEJDeUFLSUI0MkFnQUxBa0FnS2dSQUlCQkJ3QUZxRUI4aEhpQVFJQkFvQXRBQklBWWdDVUVRZEVFZmRXb2lCbXMyQXRBQklCQWdFQ2tEeUFFZ0JxMklOd1BJQVNBS0lCSkJBblJxSUI1QmZ5QUdkRUYvYzNFZ0NVRUxka0VCY1NBR2RISkJBWElpQmtFQ2FpQWdkQ0FlUVI5MGNqWUNBQ0FCUWFCL0lBWm5hem9BQVF3QkN5QVBRUWh4UlEwQUlBb2dFa0VDZEdwQkFEWUNBQXNnQjBFSWFpRUpBa0FDUUNBQ1FSQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSTjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFSWRrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBFUWNVVU5BUXNnQ1NBR05nSUFDd0pBSUFKQklIRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVuUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQ1haQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVRWdJQVpuYXlJR0lBRXRBQUZCL3dCeElna2dCaUFKU3h0QmdBRnlPZ0FCREFFTElBOUJJSEZGRFFBZ0NTQVNRUUowYWtFQU5nSUFDeUFIUVF4cUlRa0NRQUpBSUFKQndBQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSRjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFS2RrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBIQUFIRkZEUUVMSUFrZ0JqWUNBQXNnQVVFQ2FpRUJBa0FnQWtHQUFYRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVIUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQzNaQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVR2dmeUFHWjJzNkFBQU1BUXNnRDBHQUFVa05BQ0FKSUJKQkFuUnFRUUEyQWdBTElDTkJFSE1oSXlBVElBMUJCSEZxSVJNZ0IwRVFhaUVISUJJZ0Ywb05BQXNMQWtBZ0cwRUNTUTBBSUJGQkFuRkZEUUFnREVFRWNTRUdBa0FDZndKQUFrQWdNd1JBSUE0Z0pTQUdHeUVOUVFBaER5QVNRUUJNRFFFZ0N5QVJRUUpySUJKc1FRSjBhaUVYQTBBZ0VFR0FBV29RTlNFQ1FRQWhDU0FOS0FJQUlnY0VRQ0FYSUE5QkFuUnFJUWxCQUNFSVFROGhBUU5BQWtBZ0FTQUhjVVVOQUNBQlFaR2l4SWdCY1NJVElBZHhCRUFnQ1NBSktBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVCZENBSGNRUkFJQWtnRWtFQ2RHb2lDaUFLS0FJQUlBSkJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBSkJBWFloQWdzZ0UwRUNkQ0FIY1FSQUlBa2dPbW9pQ2lBS0tBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVEZENBSGNVVU5BQ0FKSURGcUloTWdFeWdDQUNBQ1FYOXpRUUZ4SUNCMGN5QXVjallDQUNBQ1FRRjJJUUlMSUFsQkJHb2hDU0FCUVFSMElRRWdDRUVCYWlJSVFRaEhEUUFMSUFkcElRa0xJQTFCQkdvaERTQVFJQkFvQXBBQklBbHJOZ0tRQVNBUUlCQXBBNGdCSUFtdGlEY0RpQUVnRDBFSWFpSVBJQkpJRFFBTEN5QXBJQ2dnQmhzaENpQU9JQ1VnQmhzaERTQUdSU0VQSUJKQkFFd05BMEVBSVFZZ1FBMEJJQW9nRFNBN2Fra2dEU0FLSUR0cUlnSkpjUTBCUVFBZ0NpSUpJQTBpQVNBK2FrRUlha2tnQVVFRWFpQUNTWEVOQWhvZ0FTQThhaUVCSUFrZ1BHb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQW9nQWtFQ2RDSUdhaUlISUFZZ0RXb2lCdjBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlBY2dSeUFHL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUI5SERRQUxJQjhnUDBZTkF5QVZJUVlnUi8wYkF3d0NDeUFHUlNFUElDa2dLQ0FHR3lFS0RBSUxJQW9oQ1NBTklRRkJBQXNoQWdOQUlBSkJISFloQnlBSklBRW9BZ0FpQWtFRWRpQUhJQUpCQkhSeWNpQUNjaUlITmdJQUlBa2dCeUFCS0FJRVFSeDBjaUlIUVFGMlFmZnUzYnNIY1NBSFFRRjBRZTdkdS9kK2NYSWdCM0lnQWtGL2MzRTJBZ0FnQ1VFRWFpRUpJQUZCQkdvaEFTQUdRUWhxSWdZZ0VrZ05BQXNMSUJGQkJra05BRUVBSVFoQkFDRVRJQTBoQ1NBcElDZ2dEeHNpSENFQ0lBNGdKU0FQR3lJWUlRRWdFa0VBU2dSQUEwQWdDVUVFYWlFSElBSW9BZ0FoRnlBSktBSUFJUVlnQWlBNUJIOGdGd1VnQmtFRWRDQVRRUngyY2lBR1FRUjJjaUFIS0FJQVFSeDBjaUFHY2tFRGRFR0lrYUxFZUhFZ0YzSUxJQUVvQWdCQmYzTnhOZ0lBSUFGQkJHb2hBU0FDUVFScUlRSWdCaUVUSUFjaENTQUlRUWhxSWdnZ0VrZ05BQXNnQ3lBUlFRWnJJQkpzUVFKMGFpRkJRUUFoSGlBWUlSTURRRUVBSVFjZ0hDZ0NBQ0lCQkVBZ0hrRUVjaUZDSUJJZ0htc2hRMEVBSVFKQkFDRVVBMEFnQWlBUVFhQUJhaEFmSVFJQ1FDQVVRUVJxSUVNZ0ZDQkNhaUFTU0JzaU5DQVVUQVJBUVFBaENRd0JDeUFUS0FJQVFYOXpJU29nUVNBVUlCNXlRUUowYWlFUFFRQWhDVUVQSUJRaUNFRUNkQ0pFZENJWElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSnlBQmNRUkFJQUpCQVhFRVFDQUhJQ2R5SVFkQk1pQUlRUUowZENBcWNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUNkQkFYUWlOWEVFUUNBQ1FRRnhCRUFnQnlBMWNpRUhJQUZCOUFBZ0NFRUNkSFFnS25GeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdKMEVDZENJMWNRUkFJQUpCQVhFRVFDQUhJRFZ5SVFjZ0FVSG9BU0FJUVFKMGRDQXFjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBblFRTjBJaWR4UlEwQUlBSkJBWEVFUUNBSElDZHlJUWNnQVVIQUFTQUlRUUowZENBcWNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBMFNBMEFDeUFISUVSMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRjNGRkRRQWdGMEdSb3NTSUFYRWlCaUFIY1FSQUlBOGdEeWdDQUNBQ1FSOTBjaUF0Y2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0R5QVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdMWEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUE4Z09tb2lDQ0FJS0FJQUlBSkJIM1J5SUMxeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdEeUF4YWlJR0lBWW9BZ0FnQWtFZmRISWdMWEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRjBFRWRDRVhJQTlCQkdvaER5QVVRUUZxSWhRZ05FZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFVVFRRnhSUTBBQ3lBY0lCd29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBVEtBSUVRWDl6Y1hJMkFnUUxJQk1vQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQjRFUUNBS1FRUnJJZ0lnQWlnQ0FDQU5RUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRFNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBTktBSUVRWDl6SUFaQkgzWnhjallDQkNBY1FRUnFJUndnRTBFRWFpRVRJQXBCQkdvaENpQU5RUVJxSVEwZ0hrRUlhaUllSUJKSURRQUxDeUFZUVFBZ1BSQVpHZ3NnRENBaFNBMEFDd3NDUUNBYlFRSkpEUUFDUUNBaFFRTnhRUUZySWhkQkFra2dNM0VFUUNBU1FRQk1EUUZCQVNBa1FRSnJkQ0VISUFzZ0lVSDgvLzhIY1NBU2JFRUNkR29oQ2lBbElBNGdJVUVFY1JzaEJDQVNRUXhzSVJzZ0VrRURkQ0VXSUNSQkFXc2hEVUVBSVJRRFFDQVFRWUFCYWhBMUlRSkJBQ0VKSUFRb0FnQWlCZ1JBSUFvZ0ZFRUNkR29oQ1VFUElRRkJBQ0VJQTBBQ1FDQUJJQVp4UlEwQUlBRkJrYUxFaUFGeEloTWdCbkVFUUNBSklBa29BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFGMElBWnhCRUFnQ1NBU1FRSjBhaUlkSUIwb0FnQWdBa0YvYzBFQmNTQU5kSE1nQjNJMkFnQWdBa0VCZGlFQ0N5QVRRUUowSUFaeEJFQWdDU0FXYWlJZElCMG9BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFOMElBWnhSUTBBSUFrZ0cyb2lFeUFUS0FJQUlBSkJmM05CQVhFZ0RYUnpJQWR5TmdJQUlBSkJBWFloQWdzZ0NVRUVhaUVKSUFGQkJIUWhBU0FJUVFGcUlnaEJDRWNOQUFzZ0Jta2hDUXNnQkVFRWFpRUVJQkFnRUNnQ2tBRWdDV3MyQXBBQklCQWdFQ2tEaUFFZ0NhMklOd09JQVNBVVFRaHFJaFFnRWtnTkFBc0xJQmRCQVVzTkFDQVNRUUJNRFFBZ0pTQU9JQ0ZCQkhFaUFSc2hCeUFvSUNrZ0FSc2hDRUVBSVFZQ2Z3SkFJQ3NnR1VGL2Myb2lBVUU0U1EwQUlBZ2dCeUFCUVFGMlFmei8vLzhIY1NJSlFRUnFJZ0pxU1NBSElBSWdDR29pQWtseERRQWdDQ0FISUFscVFRaHFTU0FIUVFScUlBSkpjUTBBSUFGQkEzWkJBV29pRFVIOC8vLy9BM0VpQkVFRGRDRUdJQWNnQkVFQ2RDSUphaUVCSUFnZ0NXb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQWdnQWtFQ2RDSVRhaUlYSUFjZ0Uyb2lFLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlCY2dSeUFUL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUFSSERRQUxJQVFnRFVZTkFpQkgvUnNEREFFTElBZ2hDU0FISVFGQkFBc2hBZ05BSUFKQkhIWWhCeUFKSUFFb0FnQWlBa0VFZGlBSElBSkJCSFJ5Y2lBQ2NpSUhOZ0lBSUFrZ0J5QUJLQUlFUVJ4MGNpSUhRUUYyUWZmdTNic0hjU0FIUVFGMFFlN2R1L2QrY1hJZ0IzSWdBa0YvYzNFMkFnQWdDVUVFYWlFSklBRkJCR29oQVNBR1FRaHFJZ1lnRWtnTkFBc0xJQ0VnSVVFQmFrRURjV3RCQTJ0QkFDQWhRUVpLR3lJRUlDRk9EUUFnRWtFTWJDRXNJQkpCQTNRaExVRURJQ1JCQW10MElTQWdLeUFaUVg5emFpSUJRUU4ySWdaQkFuUWlHVUVFYWlFZElBWkJBV29pSkVIOC8vLy9BM0VpSWtFQ2RDRVJJQ0pCQTNRaEV5QUJRUmhKSVNzZ0FVRVhTeUV1QTBBQ1FBSkFBa0FDUUFKL0FrQWdJU0FFYXlJQlFRRnJJZ1pCQTA4RVFFRi9JUlFnQVVFRlNBMEZJQkpCQUV3TkJpQWxJQTRnQkVFRWNTSUJHeUVOSUNnZ0tTQUJHeUVJSURrRVFFRUFJUUVnTGtVTkJDQU5JQWdnSFdwSklBMGdIV29nQ0V0eERRUWdEU0FSYWlFSklBZ2dFV29oQWdOQUlBZ2dBVUVDZENJR2FpSUhJQWY5QUFJQUlBWWdEV3I5QUFJQS9VLzlDd0lBSUFGQkJHb2lBU0FpUncwQUN5QVRJUUVnSWlBa1JnMEdEQVVMSUE0Z0pTQUJHeUVYUVFBaEJpQXJEUUVnQ0NBWElCMXFTU0FYSUFnZ0hXb2lBVWx4RFFFZ0NDQVhJQmxxUVFocVNTQVhRUVJxSUFGSmNRMEJJQWdnRFNBZGFra2dBU0FOUzNFTkFTQU5JQkZxSVFjZ0NDQVJhaUVKSUJFZ0Yyb2hBdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFRTkFJQWdnQVVFQ2RDSUdhaUlLSUFZZ0Yyb2lHLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ0cvMEFBZ1JCSFAyckFmMVFJRWo5VUVFRC9hc0IvUXlJaUlpSWlJaUlpSWlJaUlpSWlJaUkvVTRnQ3YwQUFnRDlVQ0FHSUExcS9RQUNBUDFQL1FzQ0FDQklJVWNnQVVFRWFpSUJJQ0pIRFFBTElDSWdKRVlOQlNBVElRWWdSLzBiQXd3Q0N5QUdRUUowUVp5aUFXb29BZ0FoRkF3RUN5QVhJUUlnQ0NFSklBMGhCMEVBQ3lFQkEwQWdBVUVjZGlFSUlBa2dDU2dDQUNBQ0tBSUFJZ0ZCQkhZZ0NDQUJRUVIwY25JZ0FpZ0NCRUVjZEhJZ0FYSkJBM1JCaUpHaXhIaHhjaUFIS0FJQVFYOXpjVFlDQUNBSFFRUnFJUWNnQ1VFRWFpRUpJQUpCQkdvaEFpQUdRUWhxSWdZZ0VrZ05BQXNNQWdzZ0NDRUNJQTBoQ1FzRFFDQUNJQUlvQWdBZ0NTZ0NBRUYvYzNFMkFnQWdDVUVFYWlFSklBSkJCR29oQWlBQlFRaHFJZ0VnRWtnTkFBc0xJQkpCQUV3TkFDQWxJQTRnQkVFRWNTSUJHeUVNSUNnZ0tTQUJHeUVZSUE0Z0pTQUJHeUVWSUNrZ0tDQUJHeUVLSUFzZ0JDQVNiRUVDZEdvaEtrRUFJUnNEUUVFQUlRY2dHQ2dDQUNBVWNTSUJCRUFnRzBFRWNpRW5JQklnRzJzaEgwRUFJUUpCQUNFTkEwQWdBaUFRUWFBQmFoQWZJUUlDUUNBTlFRUnFJQjhnRFNBbmFpQVNTQnNpSENBTlRBUkFRUUFoQ1F3QkN5QVVJQXdvQWdCQmYzTnhJU01nS2lBTklCdHlRUUowYWlFV1FRQWhDVUVQSUEwaUNFRUNkQ0l6ZENJUElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSGlBQmNRUkFJQUpCQVhFRVFDQUhJQjV5SVFkQk1pQUlRUUowZENBamNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUI1QkFYUWlNWEVFUUNBQ1FRRnhCRUFnQnlBeGNpRUhJQUZCOUFBZ0NFRUNkSFFnSTNGeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdIa0VDZENJeGNRUkFJQUpCQVhFRVFDQUhJREZ5SVFjZ0FVSG9BU0FJUVFKMGRDQWpjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBZVFRTjBJaDV4UlEwQUlBSkJBWEVFUUNBSElCNXlJUWNnQVVIQUFTQUlRUUowZENBamNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBY1NBMEFDeUFISUROMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRDNGRkRRQWdEMEdSb3NTSUFYRWlCaUFIY1FSQUlCWWdGaWdDQUNBQ1FSOTBjaUFnY2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0ZpQVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdJSEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUJZZ0xXb2lDQ0FJS0FJQUlBSkJIM1J5SUNCeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdGaUFzYWlJR0lBWW9BZ0FnQWtFZmRISWdJSEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRDBFRWRDRVBJQlpCQkdvaEZpQU5RUUZxSWcwZ0hFZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFTlFRRnhSUTBBQ3lBWUlCZ29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBTUtBSUVRWDl6Y1hJMkFnUUxJQXdvQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQnNFUUNBS1FRUnJJZ0lnQWlnQ0FDQVZRUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRlNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBVktBSUVRWDl6SUFaQkgzWnhjallDQkNBWVFRUnFJUmdnREVFRWFpRU1JQXBCQkdvaENpQVZRUVJxSVJVZ0cwRUlhaUliSUJKSURRQUxDeUFFUVFScUlnUWdJVWdOQUFzTFFRRWhBaUFoUVFCTURRTWdFa0VBVEEwRElCSkIvUC8vL3dkeElnWkJBblFoQnlBU1FRUkpJUVJCQUNFSUEwQWdDeUFJSUJKc1FRSjBhaUVCQWtBQ1FDQUVCRUFnQVNFQ1FRQWhDUXdCQ3lBQklBZHFJUUpCQUNFSkEwQWdBU0FKUVFKMGFpSU5JQTM5QUFJQUlrZjlEUC8vLzMvLy8vOS8vLy8vZi8vLy8zLzlUaUpJL2FFQklFZ2dSLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFJQWxCQkdvaUNTQUdSdzBBQ3lBR0lna2dFa1lOQVFzRFFDQUNRUUFnQWlnQ0FDSUJRZi8vLy84SGNTSU5heUFOSUFGQkFFZ2JOZ0lBSUFKQkJHb2hBaUFKUVFGcUlna2dFa2NOQUFzTFFRRWhBaUFJUVFGcUlnZ2dJVWNOQUFzTUF3c2dJa1VOQUNBUUlCb29BaGcyQWpRZ0VDQVdOZ0l3SUIxQkFVR3h5d0FnRUVFd2FoQVREQUVMSUJBZ0NUWUNGQ0FRSUJZMkFoQWdIVUVCUWJITEFDQVFRUkJxRUJOQkFDRUNEQUVMUVFBaEFnc2dFRUd3QW1va0FDQUNEUUVNQXdzZ0F5QUJRUWwwUVpDdUFXbzJBbXdDZjBFQUlRY2dBeWdDZENFQkFrQUNRQ0FhS0FJUUlCb29BZ2hySWdvZ0dpZ0NGQ0FhS0FJTWF5SU5iQ0lHSUFNb0FvUUJTd1JBSUFFUUZDQURJQVpCQW5RUUhDSUJOZ0owUVFBZ0FVVU5BeG9nQXlBR05nS0VBUXdCQ3lBQlJRMEJDeUFCUVFBZ0JrRUNkQkFaR2dzZ0F5Z0NlQ0VCQWtBZ0NrRUNhaUlJSUExQkEycEJBbllpRmtFQ2Ftd2lCaUFES0FLSUFVMEVRQ0FHUVFKMElSc01BUXNnQVJBVUlBTWdCa0VDZENJYkVCd2lBVFlDZUNBQkRRQkJBQXdCQ3lBRElBWTJBb2dCSUFGQkFDQWJFQmthQWtBZ0NFVU5BQ0FES0FKNElnUWhBUUpBSUFoQkJFOEVRQ0FFSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBRUlCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dCQ0FXUVFGcUlBaHNRUUowYWlFR1FRQWhCd0pBQWtBZ0NFRUVTUVJBSUFZaEFRd0JDeUFHSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBR0lCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dEVUVEY1NJQlJRMEFRWUNBZ01nRVFZQ0FnTUFFUVlDQWdJQUVJQUZCQWtZYklBRkJBVVliSVJRZ0JDQUlJQlpzUVFKMGFpRUdRUUFoQndKQUlBaEJCRWtFUUNBR0lRRU1BUXNnQmlBSVFYeHhJZ2RCQW5ScUlRRWdGUDBSSVVoQkFDRWJBMEFnQmlBYlFRSjBhaUJJL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFFZ0ZEWUNBQ0FCUVFScUlRRWdCMEVCYWlJSElBaEhEUUFMQ3lBRElBMDJBb0FCSUFNZ0NqWUNmRUVCQzBVTkFpQWFLQUljSUJOcUlodEJIMDRFUUNBaVJRMENJQ1lnR3pZQ0VDQWRRUUpCNThNQUlDWkJFR29RRXd3REN5QURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdnR2lnQ1FBMEFBa0FDUUNBYUtBSTBJZ2RCQVUwRVFDQUhRUUZIRFFFZ0F5Z0NrQUZGRFFFTElCb29BZ1FoQVVFQUlRWUNRQ0FIUVFSUEJFQWdCMEY4Y1NFQ0EwQWdBU0FKUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0NVRUVhaUlKSUFKSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFZZ0FpQUhSZzBCQ3dOQUlBRWdBa0VEZEdvb0FnUWdCbW9oQmlBQ1FRRnFJZ0lnQjBjTkFBc0xJQU1vQXBRQklSQWdCa0VDYWlJSklBTW9BcGdCU3dSQUlCQWdDUkFiSWdGRkRRVWdBeUFCTmdLVUFTQUJJQVpxUVFBN0FBQWdBeUFKTmdLWUFTQURLQUtVQVNFUUlCb29BalJGRFFJZ0dpZ0NCQ0VCQzBFQUlRSkJBQ0VHQTBBZ0FpQVFhaUFCSUFaQkEzUWlCV29pQVNnQ0FDQUJLQUlFRUJZYUlCb29BZ1FpQVNBRmFpZ0NCQ0FDYWlFQ0lBWkJBV29pQmlBYUtBSTBTUTBBQ3d3QkN5QUhRUUZIRFFFZ0dpZ0NCQ2dDQUNFUUN5QWFLQUk4SWdFRVFDQURLQUowSVN3Z0F5QUJOZ0owQ3lBYUtBSXNCRUFnRjBFQ2NTRXRJQmRCQ0hFaEpTQURRUnhxSVJnZ0YwRUJjVVVoTGtFQ0lTRURRQ0FRSUI1cUlRRWdHaWdDQUNBb1FSaHNhaUlnS0FJQUlRVUNRQ0F1SUJzZ0dpZ0NIRUVFYTBvZ0lVRUJTM0p5SWlORkJFQWdBeUFCTmdJVUlBTWdBU0FGYWlJRk5nSVlJQU1nQlM4QUFEc0JjQ0FGUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQTBFQU5nSUlJQU5CQURZQ0FDQURJQUUyQWhBTUFRc2dBeUFCTmdJVUlBTWdBU0FGYWlJR05nSVlJQU1nQmk4QUFEc0JjQ0FHUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQXlBRFFSeHFOZ0pvSUFNZ0FUWUNFQ0FEUVFBMkFnd2dBeUFGQkg4Z0FTMEFBRUVRZEFWQmdJRDhCd3NpQlRZQ0FFRUJJUWtnQVVFQmFpRUNJQUV0QUFFaEJnSi9JQUV0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FEUVFFMkFnd2dCVUdBL2dOeURBSUxJQU1nQWpZQ0VFRUFJUWtnQmtFSmRDQUZhZ3dCQ3lBRElBSTJBaEFnQmtFSWRDQUZjZ3NoQVNBRElBazJBZ2dnQTBHQWdBSTJBZ1FnQXlBQlFRZDBOZ0lBQ3lBZ0tBSUFJU29DUUNBYlFRQk1EUUFnSUNnQ0NFVU5BRUVBSVNrZ0xVRUFSeUFqY1NFbkEwQUNRQUpBQWtBQ1FBSkFJQ0ZCQVdzT0FnRUNBQXNnSTBVRVFFRUJJQnQwSWdGQkFYWWdBWEloQkNBREtBSjhJaFpCQW5RaURTQURLQUo0YWtFTWFpRUJJQU1vQW5RaEJrRUFJUk1nQXlnQ2dBRWlCVUVFVHdSQUlCWkZEUVVnRmtFTWJDRUhJQlpCQTNRaENrRUFJQVJySVFJRFFFRUFJUVVEUUFKQUlBRWlDU2dDQUNJQlJRMEFBa0FnQVVHUWdJQUJjUTBBSUFGQjd3TnhSUTBBSUFNb0FnQWhBUUpBSUFNb0FnZ2lDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnQ1FDQUJJQWgyUVFGeFJRMEFBa0FnQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFDSUFRZ0FTQUlka0VCY1NJSUd6WUNBQ0FES0FKOElRRWdDVUVFYXlJVUlCUW9BZ0JCSUhJMkFnQWdDU0FKS0FJRVFRaHlOZ0lFSUFrZ0NTZ0NBQ0FJUVJOMGNrRVFjallDQUNBbERRQWdDVUYrSUFGclFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0NFRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBQ3lBSklBa29BZ0JCZ0lDQUFYSWlBVFlDQUFzQ1FDQUJRWUNCZ0FoeERRQWdBVUg0SG5GRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FKQW44Z0FTQUlka0VCY1VVRVFDQUpLQUlBREFFTEFrQWdDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnZ0JpQU5haUFDSUFRZ0FTQUlka0VCY1NJQkd6WUNBQ0FKUVFScklnZ2dDQ2dDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUpLQUlBSUFGQkZuUnlRWUFCY2d0QmdJQ0FDSElpQVRZQ0FBc0NRQ0FCUVlDSWdNQUFjUTBBSUFGQndQY0JjVVVOQUNBREtBSUFJUUVDUUNBREtBSUlJZ2dOQUNBQlFmOEJSaUVVSUFNb0FoQWlDQzBBQUNFQkFrQWdGRVVFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUVFSElRZ01BZ3RCL3dFaEFTQURRZjhCTmdJQUMwRUlJUWdMSUFNZ0NFRUJheUlJTmdJSUlBa0NmeUFCSUFoMlFRRnhSUVJBSUFrb0FnQU1BUXNDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFwcUlBSWdCQ0FCSUFoMlFRRnhJZ0ViTmdJQUlBbEJCR3NpQ0NBSUtBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFrb0FnQWdBVUVaZEhKQmdBaHlDMEdBZ0lEQUFISWlBVFlDQUFzZ0FVR0F3SUNBQkhFTkFDQUJRWUM4RDNGRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FCSUFoMlFRRnhCRUFDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFkcUlBSWdCQ0FCSUFoMlFRRnhJZ2diTmdJQUlBTW9BbndoQVNBSlFRUnJJaFFnRkNnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBSUFJQWhCSEhSeVFZREFBSEkyQWdBZ0NTQUJRUUowYWlJQklBRW9BZ1JCQkhJMkFnUWdBU0FCS0FJTVFRRnlOZ0lNSUFFZ0FTZ0NDQ0FJUVJKMGNrRUNjallDQ0FzZ0NTQUpLQUlBUVlDQWdJQUVjallDQUFzZ0JrRUVhaUVHSUFsQkJHb2hBU0FGUVFGcUlnVWdGa2NOQUFzZ0JpQUhhaUVHSUFsQkRHb2hBU0FUUVFScUloTWdBeWdDZ0FFaUJVRjhjVWtOQUFzTElBVWdFMDBOQXlBV1JRMERRUUFoQ2tFQUlBUnJJUTRnQlNFSUEwQUNRQ0FJSUJOR0JFQWdFeUVJREFFTElBRkJCR3NoRkNBQktBSUFJUTFCQUNFQ0EwQUNRQ0FOSUFKQkEyd2lDWFlpQjBHUWdJQUJjUTBBSUFkQjd3TnhSUTBBSUFNb0FnQWhCUUpBSUFNb0FnZ2lCdzBBSUFWQi93RkhJUWdnQXlnQ0VDSUhMUUFBSVFVQ1FDQUlSUVJBSUFWQmtBRlBCRUJCL3dFaEJTQURRZjhCTmdJQURBSUxJQU1nQlRZQ0FDQURJQWRCQVdvMkFoQkJCeUVIREFJTElBTWdCVFlDQUNBRElBZEJBV28yQWhBTFFRZ2hCd3NnQXlBSFFRRnJJZ2MyQWdnQ1FDQUZJQWQyUVFGeFJRMEFJQVlnQWlBV2JFRUNkR29DUUNBSERRQWdCVUgvQVVjaERTQURLQUlRSWdjdEFBQWhCUUpBSUExRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0IwRUJhallDRUVFSElRY01BZ3NnQXlBRk5nSUFJQU1nQjBFQmFqWUNFQXRCQ0NFSEN5QURJQWRCQVdzaUJ6WUNDQ0FPSUFRZ0JTQUhka0VCY1NJSEd6WUNBQ0FES0FKOElRZ2dGQ0FVS0FJQVFTQWdDWFJ5TmdJQUlBRWdBU2dDQUNBSFFSTjBRUkJ5SUFsMGNqWUNBQ0FCSUFFb0FnUkJDQ0FKZEhJMkFnUWdBaUFsY2tVRVFDQUJRWDRnQ0d0QkFuUnFJZ1VnQlNnQ0JFR0FnQUp5TmdJRUlBVWdCU2dDQUNBSFFSOTBja0dBZ0FSeU5nSUFJQVZCQkdzaUJTQUZLQUlBUVlDQUNISTJBZ0FMSUFKQkEwY05BQ0FCSUFoQkFuUnFJZ1VnQlNnQ0JFRUVjallDQkNBRklBVW9BZ3hCQVhJMkFnd2dCU0FGS0FJSUlBZEJFblJ5UVFKeU5nSUlDeUFCSUFFb0FnQkJnSUNBQVNBSmRISWlEVFlDQUNBREtBS0FBU0VGQ3lBRklRZ2dBa0VCYWlJQ0lBVWdFMnRKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUFwQkFXb2lDaUFXUncwQUN3d0RDMEVBSVFsQkFDRVdRUUFoQ2dKQUFrQUNRQUpBSUFNb0Fud2lCRUhBQUVjTkFDQURLQUtBQVVIQUFFY05BRUVBUVFFZ0czUWlBVUVCZGlBQmNpSVRheUVVSUFOQkhHb2hCQ0FES0FKNFFZd0NhaUVHSUFNb0FnZ2hDQ0FES0FJRUlRVWdBeWdDQUNFSElBTW9BbWdoRFNBREtBSjBJUUVnRjBFSWNRMEJBMEJCQUNFS0EwQWdBU0VDSUFZaUNTZ0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FGSUFRZ0F5Z0NiQ0FCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnQ3hzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWdzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlBc2JEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRVhaQkJIRWdDVUVFYXlJTUtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSklBa29BZ1JCQ0hJMkFnUWdDVUdNQW1zaURpQU9LQUlBUVlDQUNISTJBZ0FnQ1VHRUFtc2lEaUFPS0FJQVFZQ0FBbkkyQWdBZ0NVR0lBbXNpRGlBT0tBSUFJQUVnQzNNaUFVRWZkSEpCZ0lBRWNqWUNBQ0FHSUFGQkUzUnlRUkJ5QlNBR0MwR0FnSUFCY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FHUWZnZWNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFOMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRkhaQkJIRWdDVUVFYXlJTUtBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FBaUFNSUF3b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQklBdHpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FFSUFNb0Ftd2dCa0VHZGlJTFFlOERjV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlN3UkFJQTRvQWdRaERDQU5JQTVCQ0VFTUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VGSUFndEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBTUlBeEZJQkViREFFTElBY2dBVUVRZEdzaEJ5QUZRWUNBQW5GRkJFQWdEaWdDQkNFTUlBMGdEa0VNUVFnZ0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dERVVnRENBUkd3d0JDeUFPS0FJRUN3Ui9JQVVnQkNBSktBSUVRUmQyUVFSeElBbEJCR3NpRENnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUF0QnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRklBdEJrTUFCYWkwQUFDRUxJQUlnRXlBVUlBc0NmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRVJJQTBnRGtFSVFRd2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCRWdFVVVnRlJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlSRWdEU0FPUVF4QkNDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFSUlNBUklCVWJEQUVMSUE0b0FnUUxJZ0ZHR3pZQ2dBUWdEQ0FNS0FJQVFZQVFjallDQUNBSklBa29BZ1JCZ0FSeU5nSUVJQVlnQVNBTGMwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQVFnQXlnQ2JDQUdRUWwySWd0Qjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTEJFQWdEaWdDQkNFTUlBMGdEa0VJUVF3Z0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUVVnQ0MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFWQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUF3Z0RFVWdFUnNNQVFzZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1VVRVFDQU9LQUlFSVF3Z0RTQU9RUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVPSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBRElBNDJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUE0MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQndzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QU1SU0FNSUJFYkRBRUxJQTRvQWdRTEJIOGdCU0FFSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlNS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnQzBHcUFYRnljbkp5SWd0QmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVZ0MwR1F3QUZxTFFBQUlRc2dBaUFUSUJRZ0N3Si9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlSRWdEU0FPUVFoQkRDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0VTQVJSU0FWR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaEVTQU5JQTVCREVFSUlBRWdCVXNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQkZGSUJFZ0ZSc01BUXNnRGlnQ0JBc2lBVVliTmdLQUJpQU1JQXdvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQWtnQ1NnQ2hBSkJCSEkyQW9RQ0lBa2dDU2dDakFKQkFYSTJBb3dDSUFrZ0NTZ0NpQUlnQVNBTGN5SUJRUkowY2tFQ2NqWUNpQUlnQmlBQlFSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdBa0VFYWlFQklBcEJBV29pQ2tIQUFFY05BQXNnQ1VFTWFpRUdJQUpCaEFacUlRRWdGa0U4U1NBV1FRUnFJUllOQUFzTUFndEJBU0FiZENJQlFRRjJJQUZ5SVJZZ0F5Z0NlQ0lDSUFSQkFuUnFRUXhxSVFZZ0F5Z0NnQUVoQVNBREtBSUlJUWdnQXlnQ0JDRUZJQU1vQWdBaEJ5QURLQUpvSVEwZ0F5Z0NkQ0VUQWtBZ0YwRUljUVJBQWtBZ0FVRUVTUTBBSUFRRVFDQUVRUXhzSVJFZ0JFRURkQ0VrUVFBZ0Ztc2hDeUFEUVJ4cUlSUURRRUVBSVE0RFFDQUdJZ0lvQWdBaUJnUkFBa0FnQmtHUWdJQUJjUTBBSUFaQjd3TnhJZ0ZGRFFBZ0JTQVVJQU1vQW13Z0FXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lFaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRWhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlTRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdFaHNMQkg4Z0JTQVVJQUlvQWdSQkVYWkJCSEVnQWtFRWF5SVZLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QVdJQXNnRWdKL0lBRWdCMEVRZGswRVFDQUhJQUZCRUhScklRY2dCVUdBZ0FKeEJFQWdEQ2dDQkF3Q0N5QU1LQUlFSVE4Z0RTQU1RUXhCQ0NBQklBVkxJaHdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSERBRUxJQUZCandGTkJFQWdBeUFNTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QVBSU0FQSUJ3YkRBRUxJQXdvQWdRaER5QU5JQXhCQ0VFTUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VGSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY01BUXNnQlVHUEFVMEVRQ0FESUF3MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBUElBOUZJQndiQ3lJQlJoczJBZ0FnRlNBVktBSUFRU0J5TmdJQUlBSWdBaWdDQkVFSWNqWUNCQ0FHSUFFZ0VuTkJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRklCUWdBeWdDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFVWRrRUVjU0FDUVFSckloVW9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBVElBUkJBblJxSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ0ZHR3pZQ0FDQVZJQlVvQWdCQmdBSnlOZ0lBSUFJZ0FpZ0NCRUhBQUhJMkFnUWdCaUFCSUJKelFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0JTQVVJQU1vQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lEeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRHhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdEeHNMQkg4Z0JTQVVJQUlvQWdSQkYzWkJCSEVnQWtFRWF5SVZLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QWthaUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SUJSaHMyQWdBZ0ZTQVZLQUlBUVlBUWNqWUNBQ0FDSUFJb0FnUkJnQVJ5TmdJRUlBWWdBU0FTYzBFWmRISkJnQWh5QlNBR0MwR0FnSURBQUhJaEJnc0NRQ0FHUVlEQWdJQUVjUTBBSUFaQmdMd1BjVVVOQUNBRklCUWdBeWdDYkNBR1FRbDJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFYWRrRUVjU0FDUVFSckloVW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBUklCTnFJQllnQ3lBU0FuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaER5QU5JQXhCREVFSUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQTlGSUE4Z0hCc01BUXNnRENnQ0JDRVBJQTBnREVFSVFRd2dBU0FGU3lJY0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBOGdEMFVnSEJzTElneEdHellDQUNBVklCVW9BZ0JCZ0lBQmNqWUNBQ0FDSUFJb0FnUkJnQ0J5TmdJRUlBTW9BbnhCQW5RZ0Ftb2lBU0FCS0FJRVFRUnlOZ0lFSUFFZ0FTZ0NERUVCY2pZQ0RDQUJJQUVvQWdnZ0RDQVNjeUlCUVJKMGNrRUNjallDQ0NBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBQ0lBWTJBZ0FMSUFKQkJHb2hCaUFUUVFScUlSTWdEa0VCYWlJT0lBUkhEUUFMSUFKQkRHb2hCaUFSSUJOcUlSTWdDVUVFYWlJSklBTW9Bb0FCSWdGQmZIRkpEUUFMREFFTFFRUWdBVUY4Y1NJR0lBWkJCRTBiUVFGcklnWkJmSEZCQkdvaENTQUNJQVpCQVhSQmVIRnFRUlJxSVFZTElBTWdDRFlDQ0NBRElBVTJBZ1FnQXlBSE5nSUFJQU1nRFRZQ2FDQUVSUTBCSUFFZ0NVME5BUU5BSUFFZ0NVWkJBQ0VJSUFraEFVVUVRQU5BSUFNZ0JpQVRJQVFnQ0d4QkFuUnFJQllnQ0NBREtBSjhRUUpxUVFFUVlpQUlRUUZxSWdnZ0F5Z0NnQUVpQVNBSmEwa05BQXNMSUFaQkJHb2hCaUFUUVFScUlSTWdDa0VCYWlJS0lBUkhEUUFMREFFTEFrQWdBVUVFU1EwQUlBUUVRQ0FFUVF4c0lSRWdCRUVEZENFa1FRQWdGbXNoQ3lBRFFSeHFJUlFEUUVFQUlRNERRQ0FHSWdJb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdCU0FVSUFNb0Ftd2dBV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRWh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0Voc01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRWhzTEJIOGdCU0FVSUFJb0FnUkJFWFpCQkhFZ0FrRUVheUlWS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SU1SaHMyQWdBZ0ZTQVZLQUlBUVNCeU5nSUFJQUlnQWlnQ0JFRUljallDQkNBQ1FYNGdBeWdDZkd0QkFuUnFJZ0VnQVNnQ0JFR0FnQUp5TmdJRUlBRWdBU2dDQUNBTUlCSnpJZ3hCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FDQUdJQXhCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRVVka0VFY1NBQ1FRUnJJaFVvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVRJQVJCQW5ScUlCWWdDeUFTQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRHlBTklBeEJERUVJSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElBOUZJQThnSEJzTUFRc2dEQ2dDQkNFUElBMGdERUVJUVF3Z0FTQUZTeUljRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUE4Z0QwVWdIQnNMSWdGR0d6WUNBQ0FWSUJVb0FnQkJnQUp5TmdJQUlBSWdBaWdDQkVIQUFISTJBZ1FnQmlBQklCSnpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FVSUFNb0Ftd2dCa0VHZGlJU1FlOERjV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRHh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0R4c01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJUEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRHhzTEJIOGdCU0FVSUFJb0FnUkJGM1pCQkhFZ0FrRUVheUlWS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRWtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFrYWlBV0lBc2dFZ0ovSUFFZ0IwRVFkazBFUUNBSElBRkJFSFJySVFjZ0JVR0FnQUp4QkVBZ0RDZ0NCQXdDQ3lBTUtBSUVJUThnRFNBTVFReEJDQ0FCSUFWTElod2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU1JQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQU1nRERZQ0VFRUlJUWdnQVVFSWRDQUhhaUVIREFFTElBRkJqd0ZOQkVBZ0F5QU1OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXNnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUFJTQVBJQndiREFFTElBd29BZ1FoRHlBTklBeEJDRUVNSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUZJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTUFRc2dCVUdQQVUwRVFDQURJQXcyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FQSUE5RklCd2JDeUlCUmhzMkFnQWdGU0FWS0FJQVFZQVFjallDQUNBQ0lBSW9BZ1JCZ0FSeU5nSUVJQVlnQVNBU2MwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRWFka0VFY1NBQ1FRUnJJaFVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVJJQk5xSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ3hHR3pZQ0FDQVZJQlVvQWdCQmdJQUJjallDQUNBQ0lBSW9BZ1JCZ0NCeU5nSUVJQU1vQW54QkFuUWdBbW9pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dEQ0FTY3lJQlFSSjBja0VDY2pZQ0NDQUdJQUZCSEhSeVFZREFBSElGSUFZTFFZQ0FnSUFFY2lFR0N5QUNJQVkyQWdBTElBSkJCR29oQmlBVFFRUnFJUk1nRGtFQmFpSU9JQVJIRFFBTElBSkJER29oQmlBUklCTnFJUk1nQ1VFRWFpSUpJQU1vQW9BQklnRkJmSEZKRFFBTERBRUxRUVFnQVVGOGNTSUdJQVpCQkUwYlFRRnJJZ1pCZkhGQkJHb2hDU0FDSUFaQkFYUkJlSEZxUVJScUlRWUxJQU1nQ0RZQ0NDQURJQVUyQWdRZ0F5QUhOZ0lBSUFNZ0RUWUNhQ0FFUlEwQUlBRWdDVTBOQUFOQUlBRWdDVVpCQUNFSUlBa2hBVVVFUUFOQUlBTWdCaUFUSUFRZ0NHeEJBblJxSUJZZ0NDQURLQUo4UVFKcVFRQVFZaUFJUVFGcUlnZ2dBeWdDZ0FFaUFTQUphMGtOQUFzTElBWkJCR29oQmlBVFFRUnFJUk1nQ2tFQmFpSUtJQVJIRFFBTEN3d0NDd05BUVFBaENnTkFJQUVoQWlBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQlNBRUlBTW9BbXdnQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhEQ0FOSUE1QkNFRU1JQUVnQlVzaUN4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQU1JQXhGSUFzYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRU1JQTBnRGtFTVFRZ2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnREVVZ0RDQUxHd3dCQ3lBT0tBSUVDd1IvSUFVZ0JDQUpLQUlFUVJGMlFRUnhJQWxCQkdzaURDZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSUxRWkMrQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZJQXRCa01BQmFpMEFBQ0VMSUFJZ0V5QVVJQXNDZnlBQklBZEJFSFpMQkVBZ0RpZ0NCQ0VSSUEwZ0RrRUlRUXdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRVWdDQzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQkVnRVVVZ0ZSc01BUXNnQnlBQlFSQjBheUVISUFWQmdJQUNjVVVFUUNBT0tBSUVJUkVnRFNBT1FReEJDQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQUZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUlJTQVJJQlViREFFTElBNG9BZ1FMSWdGR0d6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NTQUpLQUlFUVFoeU5nSUVJQVlnQVNBTGMwRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFVZ0JDQURLQUpzSUFaQkEzWWlDMEh2QTNGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCUUovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUXdnRFNBT1FRaEJEQ0FCSUFWTEloRWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdEQ0FNUlNBUkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhEQ0FOSUE1QkRFRUlJQUVnQlVzaUVSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUF4RklBd2dFUnNNQVFzZ0RpZ0NCQXNFZnlBRklBUWdDU2dDQkVFVWRrRUVjU0FKUVFScklnd29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQUxRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCU0FMUVpEQUFXb3RBQUFoQ3lBQ0lCTWdGQ0FMQW44Z0FTQUhRUkIyU3dSQUlBNG9BZ1FoRVNBTklBNUJDRUVNSUFFZ0JVc2lGUnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUTRnQ0MwQUFTRUZJQWd0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlEQUlMSUFNZ0RqWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nRGpZQ0VFRUlJUWdnQlVFSWRDQUhhaUVIQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FSSUJGRklCVWJEQUVMSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkZGQkVBZ0RpZ0NCQ0VSSUEwZ0RrRU1RUWdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0VVVWdFU0FWR3d3QkN5QU9LQUlFQ3lJQlJoczJBb0FDSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDU0FKS0FJRVFjQUFjallDQkNBR0lBRWdDM05CRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFaMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRjNaQkJIRWdDVUVFYXlJTUtBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FCQ0FNSUF3b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQklBdHpRUmwwY2tHQUNISUZJQVlMUVlDQWdNQUFjaUVHQ3dKQUlBWkJnTUNBZ0FSeERRQWdCa0dBdkE5eFJRMEFJQVVnQkNBREtBSnNJQVpCQ1hZaUMwSHZBM0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJRSi9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlRd2dEU0FPUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0RDQU1SU0FSR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaERDQU5JQTVCREVFSUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQXhGSUF3Z0VSc01BUXNnRGlnQ0JBc0VmeUFGSUFRZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWd3b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBTFFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJTQUxRWkRBQVdvdEFBQWhDeUFDSUJNZ0ZDQUxBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhFU0FOSUE1QkNFRU1JQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVJJQkZGSUJVYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRVJJQTBnRGtFTVFRZ2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnRVVVZ0VTQVZHd3dCQ3lBT0tBSUVDeUlCUmhzMkFvQUdJQXdnRENnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBS0VBa0VFY2pZQ2hBSWdDU0FKS0FLTUFrRUJjallDakFJZ0NTQUpLQUtJQWlBQklBdHpJZ0ZCRW5SeVFRSnlOZ0tJQWlBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBSklBWTJBZ0FMSUFsQkJHb2hCaUFDUVFScUlRRWdDa0VCYWlJS1FjQUFSdzBBQ3lBSlFReHFJUVlnQWtHRUJtb2hBU0FXUVR4SklCWkJCR29oRmcwQUN3c2dBeUFJTmdJSUlBTWdCVFlDQkNBRElBYzJBZ0FnQXlBTk5nSm9Dd3dDQ3lBalJRUkFRUUVnRzNSQkFYWWhCeUFES0FKOElnUkJBblFpQ2lBREtBSjRha0VNYWlFQklBTW9BblFoQmtFQUlRMGdBeWdDZ0FFaUJVRUVUd1JBSUFSRkRRUWdCRUVNYkNFVElBUkJBM1FoRmtFQUlBZHJJUUlEUUVFQUlRVURRQUpBSUFFaUNTZ0NBQ0lCUlEwQUlBRkJrSUNBQVhGQkVFWUVRQ0FES0FJQUlRRUNRQ0FES0FJSUlnZ05BQ0FCUWY4QlJpRVVJQU1vQWhBaUNDMEFBQ0VCQWtBZ0ZFVUVRQ0FESUFFMkFnQWdBeUFJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQXlBQk5nSUFJQU1nQ0VFQmFqWUNFRUVISVFnTUFndEIvd0VoQVNBRFFmOEJOZ0lBQzBFSUlRZ0xJQU1nQ0VFQmF5SUlOZ0lJSUFZZ0FpQUhJQUVnQ0haQkFYRWdCaWdDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0F3QUJ5SWdFMkFnQUxJQUZCZ0lHQUNIRkJnQUZHQkVBZ0F5Z0NBQ0VCQWtBZ0F5Z0NDQ0lJRFFBZ0FVSC9BVVloRkNBREtBSVFJZ2d0QUFBaEFRSkFJQlJGQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhCQkJ5RUlEQUlMUWY4QklRRWdBMEgvQVRZQ0FBdEJDQ0VJQ3lBRElBaEJBV3NpQ0RZQ0NDQUdJQXBxSWhRZ0FpQUhJQUVnQ0haQkFYRWdGQ2dDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0FnQVJ5SWdFMkFnQUxJQUZCZ0lpQXdBQnhRWUFJUmdSQUlBTW9BZ0FoQVFKQUlBTW9BZ2dpQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFXYWlJVUlBSWdCeUFCSUFoMlFRRnhJQlFvQWdBaUFVRWZka1liSUFGcU5nSUFJQWtnQ1NnQ0FFR0FnSUFnY2lJQk5nSUFDeUFCUVlEQWdJQUVjVUdBd0FCSERRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUJOcUloUWdBaUFISUFFZ0NIWkJBWEVnRkNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQ1NBSktBSUFRWUNBZ0lBQ2NqWUNBQXNnQmtFRWFpRUdJQWxCQkdvaEFTQUZRUUZxSWdVZ0JFY05BQXNnQmlBVGFpRUdJQWxCREdvaEFTQU5RUVJxSWcwZ0F5Z0NnQUVpQlVGOGNVa05BQXNMSUFVZ0RVME5BaUFFUlEwQ1FRQWhDa0VBSUFkcklSWWdCU0VKQTBBQ1FDQUpJQTFHQkVBZ0RTRUpEQUVMSUFFb0FnQWhDRUVBSVFJRFFFR1FnSUFCSUFKQkEyd2lDWFFnQ0hGQkVDQUpkRVlFUUNBR0lBSWdCR3hCQW5ScUlRZ2dBeWdDQUNFRkFrQWdBeWdDQ0NJVERRQWdCVUgvQVVjaEZDQURLQUlRSWhNdEFBQWhCUUpBSUJSRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0UwRUJhallDRUVFSElSTU1BZ3NnQXlBRk5nSUFJQU1nRTBFQmFqWUNFQXRCQ0NFVEN5QURJQk5CQVdzaUV6WUNDQ0FJSUJZZ0J5QUZJQk4yUVFGeElBZ29BZ0FpQlVFZmRrWWJJQVZxTmdJQUlBRWdBU2dDQUVHQWdNQUFJQWwwY2lJSU5nSUFJQU1vQW9BQklRVUxJQVVoQ1NBQ1FRRnFJZ0lnQlNBTmEwa05BQXNMSUFaQkJHb2hCaUFCUVFScUlRRWdDa0VCYWlJS0lBUkhEUUFMREFJTElBTW9BbmdoQ0NBREtBSjBJUWtnQXlnQ2dBRWhCUUpBSUFNb0Fud2lGa0hBQUVjTkFDQUZRY0FBUncwQUlBaEJqQUpxSVFWQkFDRVdRUUJCQVNBYmRFRUJkaUlLYXlFVUlBTW9BZ2doQWlBREtBSUVJUVlnQXlnQ0FDRUJJQU1vQW1naERRTkFRUUFoRXdOQUlBa2hCeUFGSWdnb0FnQWlDUVJBSUFVZ0NVR1FnSUFCY1VFUVJnUkFJQVlnR0VFUVFROUJEaUFKUWU4RGNSc2dDVUdBZ01BQWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ0FDSUVRUjkyUmhzZ0JHbzJBZ0FnQ1VHQWdNQUFjaUVKQ3lBSlFZQ0JnQWh4UVlBQlJnUkFJQVlnR0VFUVFROUJEaUFKUWZnZWNSc2dDVUdBZ0lBRWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ2dBSWlCRUVmZGtZYklBUnFOZ0tBQWlBSlFZQ0FnQVJ5SVFrTElBbEJnSWlBd0FCeFFZQUlSZ1JBSUFZZ0dFRVFRUTlCRGlBSlFjRDNBWEViSUFsQmdJQ0FJSEViUVFKMGFpSU5LQUlBSWdRb0FnQWlCV3NoQmdKL0lBVWdBVUVRZGtzRVFDQUVLQUlFSVE0Z0RTQUVRUWhCRENBRklBWkxJZ3diYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVFSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRElBUTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFRMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnRGlBT1JTQU1Hd3dCQ3lBQklBVkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlBUW9BZ1FoRGlBTklBUkJERUVJSUFVZ0Jrc2lEQnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUVFnQWkwQUFTRUZJQUl0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFNZ0JEWUNFQ0FGUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQkRZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBNUZJQTRnREJzTUFRc2dCQ2dDQkFzaEJTQUhJQlFnQ2lBRklBY29Bb0FFSWdSQkgzWkdHeUFFYWpZQ2dBUWdDVUdBZ0lBZ2NpRUpDeUFKUVlEQWdJQUVjVUdBd0FCR0JIOGdCaUFZUVJCQkQwRU9JQWxCZ0x3UGNSc2dDVUdBZ0lDQUFuRWJRUUowYWlJTktBSUFJZ1FvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFka3NFUUNBRUtBSUVJUTRnRFNBRVFRaEJEQ0FGSUFaTElnd2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUVJQUl0QUFFaEJpQUNMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFESUFRMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QURJQVEyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRWWdEaUFPUlNBTUd3d0JDeUFCSUFWQkVIUnJJUUVnQmtHQWdBSnhSUVJBSUFRb0FnUWhEaUFOSUFSQkRFRUlJQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFRklBSXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUZRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCVUVJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUE1RklBNGdEQnNNQVFzZ0JDZ0NCQXNoQlNBSElCUWdDaUFGSUFjb0FvQUdJZ1JCSDNaR0d5QUVhallDZ0FZZ0NVR0FnSUNBQW5JRklBa0xOZ0lBQ3lBSVFRUnFJUVVnQjBFRWFpRUpJQk5CQVdvaUUwSEFBRWNOQUFzZ0NFRU1haUVGSUFkQmhBWnFJUWtnRmtFOFNTQVdRUVJxSVJZTkFBc2dBeUFDTmdJSUlBTWdCallDQkNBRElBRTJBZ0FnQXlBTk5nSm9EQUlMUVFFZ0czUkJBWFloRkNBSUlCWkJBblFpRVdwQkRHb2hCeUFES0FJSUlRSWdBeWdDQkNFR0lBTW9BZ0FoQVNBREtBSm9JUTFCQUNFRUFrQWdCVUVFU1EwQUlCWUVRQ0FXUVF4c0lRd2dGa0VEZENFVlFRQWdGR3NoRGdOQVFRQWhFd05BSUFjaUNpZ0NBQ0lJQkVBZ0J5QUlRWkNBZ0FGeFFSQkdCRUFnQmlBWVFSQkJEMEVPSUFoQjd3TnhHeUFJUVlDQXdBQnhHMEVDZEdvaURTZ0NBQ0lIS0FJQUlnVnJJUVlDZnlBRklBRkJFSFpOQkVBZ0FTQUZRUkIwYXlFQklBWkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VMSUEwZ0IwRU1RUWdnQlNBR1N5SVNHMm9vQWdBMkFnQURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hCeUFDTFFBQklRVWdBaTBBQUVIL0FVY0VRQ0FESUFjMkFoQkJDQ0VDSUFWQkNIUWdBV29oQVF3QkN5QUZRWThCVFFSQUlBTWdCellDRUNBRlFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0MwVWdDeUFTR3d3QkN5QUhLQUlFSVFzZ0RTQUhRUWhCRENBRklBWkxJaEliYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVISUFJdEFBRWhCaUFDTFFBQVFmOEJSd1JBSUFNZ0J6WUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkRBRUxJQVpCandGTkJFQWdBeUFITmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnQ3lBTFJTQVNHd3NoQlNBSklBNGdGQ0FGSUFrb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJREFBSEloQ0FzZ0NFR0FnWUFJY1VHQUFVWUVRQ0FHSUJoQkVFRVBRUTRnQ0VINEhuRWJJQWhCZ0lDQUJIRWJRUUowYWlJTktBSUFJZ2NvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFkazBFUUNBQklBVkJFSFJySVFFZ0JrR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXNnRFNBSFFReEJDQ0FGSUFaTEloSWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUhJQUl0QUFFaEJTQUNMUUFBUWY4QlJ3UkFJQU1nQnpZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCREFFTElBVkJqd0ZOQkVBZ0F5QUhOZ0lRSUFWQkNYUWdBV29oQVVFSElRSU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBTFJTQUxJQkliREFFTElBY29BZ1FoQ3lBTklBZEJDRUVNSUFVZ0Jrc2lFaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUWNnQWkwQUFTRUdJQUl0QUFCQi93RkhCRUFnQXlBSE5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTUFRc2dCa0dQQVUwRVFDQURJQWMyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhCaUFMSUF0RklCSWJDeUVGSUFrZ0VXb2lCeUFPSUJRZ0JTQUhLQUlBSWdkQkgzWkdHeUFIYWpZQ0FDQUlRWUNBZ0FSeUlRZ0xJQWhCZ0lpQXdBQnhRWUFJUmdSQUlBWWdHRUVRUVE5QkRpQUlRY0QzQVhFYklBaEJnSUNBSUhFYlFRSjBhaUlOS0FJQUlnY29BZ0FpQldzaEJnSi9JQVVnQVVFUWRrMEVRQ0FCSUFWQkVIUnJJUUVnQmtHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRc2dEU0FIUVF4QkNDQUZJQVpMSWhJYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFNb0FoQWlBa0VCYWlFSElBSXRBQUVoQlNBQ0xRQUFRZjhCUndSQUlBTWdCellDRUVFSUlRSWdCVUVJZENBQmFpRUJEQUVMSUFWQmp3Rk5CRUFnQXlBSE5nSVFJQVZCQ1hRZ0FXb2hBVUVISVFJTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFjb0FnUWhDeUFOSUFkQkNFRU1JQVVnQmtzaUVodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRY2dBaTBBQVNFR0lBSXRBQUJCL3dGSEJFQWdBeUFITmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRElBYzJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQUxJQXRGSUJJYkN5RUZJQWtnRldvaUJ5QU9JQlFnQlNBSEtBSUFJZ2RCSDNaR0d5QUhhallDQUNBSVFZQ0FnQ0J5SVFnTElBaEJnTUNBZ0FSeFFZREFBRVlFZnlBR0lCaEJFRUVQUVE0Z0NFR0F2QTl4R3lBSVFZQ0FnSUFDY1J0QkFuUnFJZzBvQWdBaUJ5Z0NBQ0lGYXlFR0FuOGdCU0FCUVJCMlRRUkFJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaEN5QU5JQWRCREVFSUlBVWdCa3NpRWh0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQXlnQ0VDSUNRUUZxSVFjZ0FpMEFBU0VGSUFJdEFBQkIvd0ZIQkVBZ0F5QUhOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRU1BUXNnQlVHUEFVMEVRQ0FESUFjMkFoQWdCVUVKZENBQmFpRUJRUWNoQWd3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQXRGSUFzZ0Voc01BUXNnQnlnQ0JDRUxJQTBnQjBFSVFRd2dCU0FHU3lJU0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJ5QUNMUUFCSVFZZ0FpMEFBRUgvQVVjRVFDQURJQWMyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFNZ0J6WUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQXlnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFR0lBc2dDMFVnRWhzTElRVWdDU0FNYWlJSElBNGdGQ0FGSUFjb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJQ0FnQUp5QlNBSUN6WUNBQXNnQ2tFRWFpRUhJQWxCQkdvaENTQVRRUUZxSWhNZ0ZrY05BQXNnQ2tFTWFpRUhJQWtnREdvaENTQUVRUVJxSWdRZ0F5Z0NnQUVpQlVGOGNVa05BQXNNQVF0QkJDQUZRWHh4SWdjZ0IwRUVUUnRCQVdzaUIwRjhjVUVFYWlFRUlBZ2dCMEVCZEVGNGNXcEJGR29oQndzZ0F5QUNOZ0lJSUFNZ0JqWUNCQ0FESUFFMkFnQWdBeUFOTmdKb0lCWkZEUUVnQkNBRlR3MEJRUUFoQ2tFQUlCUnJJUXNnQlNFQkEwQUNRQ0FCSUFSR0JFQWdCQ0VCREFFTElBY29BZ0FoQWtFQUlRZ0RRRUdRZ0lBQklBaEJBMndpRFhRZ0FuRkJFQ0FOZEVZRVFDQUpJQWdnRm14QkFuUnFJUTRnQXlBWVFSQkJEMEVPSUFJZ0RYWWlBVUh2QTNFYklBRkJnSURBQUhFYlFRSjBhaUlUTmdKb0lBTWdBeWdDQkNBVEtBSUFJZ0lvQWdBaUFXc2lCVFlDQkFKL0lBRWdBeWdDQUNJR1FSQjJTd1JBSUFJb0FnUWhEQ0FESUFFMkFnUWdFeUFDUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnSkJBV29oRXlBQ0xRQUJJUVVnQWkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUdRWUQrQTJvaEJrRUlJUUlNQWdzZ0F5QVROZ0lRSUFWQkNYUWdCbW9oQmtFSElRSU1BUXNnQXlBVE5nSVFRUWdoQWlBRlFRaDBJQVpxSVFZTElBTWdBa0VCYXlJQ05nSUlJQU1nQmtFQmRDSUdOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QU1JQXhGSUJFYkRBRUxJQU1nQmlBQlFSQjBheUlHTmdJQUlBVkJnSUFDY1VVRVFDQUNLQUlFSVF3Z0V5QUNRUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hFeUFDTFFBQklRRWdBaTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQXlBVE5nSVFJQUZCQ1hRZ0Jtb2hCa0VISVFJTUFRc2dBeUFUTmdJUVFRZ2hBaUFCUVFoMElBWnFJUVlMSUFNZ0FrRUJheUlDTmdJSUlBTWdCa0VCZENJR05nSUFJQU1nQlVFQmRDSUZOZ0lFSUFWQmdJQUNTUTBBQ3lBTVJTQU1JQkViREFFTElBSW9BZ1FMSVFFZ0RpQUxJQlFnQVNBT0tBSUFJZ1ZCSDNaR0d5QUZhallDQUNBSElBY29BZ0JCZ0lEQUFDQU5kSElpQWpZQ0FDQURLQUtBQVNFRkN5QUlRUUZxSWdnZ0JTSUJJQVJyU1EwQUN3c2dCMEVFYWlFSElBbEJCR29oQ1NBS1FRRnFJZ29nRmtjTkFBc01BUXRCQUNFUlFRQWhGQUpBQWtBQ1FBSkFJQU1vQW53aUZrSEFBRWNOQUNBREtBS0FBVUhBQUVjTkFFRUFRUUVnRzNRaUFVRUJkaUFCY2lJT2F5RU1JQU5CNUFCcUlRY2dBMEhnQUdvaENDQURRUnhxSVJZZ0F5Z0NlRUdNQW1vaEJpQURLQUlJSVFRZ0F5Z0NCQ0VCSUFNb0FnQWhBaUFES0FKb0lRa2dBeWdDZENFRklCZEJDSEVOQVFOQVFRQWhGUU5BSUFVaEV3SkFBa0FDZnlBR0lnMG9BZ0FpQmtVRVFDQUJJQWdvQWdBaUJTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQVVvQWdRaENTQUlJQVZCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUZRUUZxSVFRZ0JTMEFBU0VCSUFVdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSklBbEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdCU2dDQkNFSklBZ2dCVUVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnWkJBV29oQkNBR0xRQUJJUVVnQmkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDVVVnQ1NBS0d3d0JDeUFGS0FJRUMwVUVRQ0FJSVFrTUJBc2dBU0FIS0FJQUlnVW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FGS0FJRUlRa2dCeUFGUVFoQkRDQUJJQVpKSWdzYmFpZ0NBQ0lGTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUFzYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUpJQWNnQlVFTVFRZ2dBU0FHU1NJTEcyb29BZ0FpQlRZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJpQUVMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBVW9BZ1FMSVFvZ0FTQUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWNnQlVFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ3hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dCeUFGUVF4QkNDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFVb0FnUUxJUVZCQUNFR0lBY2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRklBcEJBWFJ5RGdRQUFRTUZDQXNnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSktBSUFRUk4yUVFGeGNpSVJRWkMrQVdvdEFBQkJBblJxSWdvb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDeUFLSUFWQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lGUVFGcUlRUWdCUzBBQVNFQklBVXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUxJQW9nQlVFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBRktBSUVDeUVGSUJNZ0RpQU1JQVVnRVVHUXdBRnFMUUFBSWdaR0d6WUNBQ0FKSUFrb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklna2dDU2dDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ2tnQ1NnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdrZ0NTZ0NBQ0FGSUFaeklnVkJIM1J5UVlDQUJISTJBZ0FnQlVFVGRDQUJJQllnQXlnQ2JDMEFBa0VDZEdvaUNTZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VLSUFrZ0JVRUlRUXdnQVNBR1NTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hDU0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFKTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0VSc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUW9nQ1NBRlFReEJDQ0FCSUFaSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFrMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQWsyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkViREFFTElBVW9BZ1FMSVFWQkVISWlCaUFGUlEwQkdnc2dBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlLS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ3lnQ0FDSUpLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ1NnQ0JDRVJJQXNnQ1VFSVFRd2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnQ3hzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FKS0FJRUlSRWdDeUFKUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQlNBSkxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBc2JEQUVMSUFrb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ1VZYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRklBbHpRUlowY2tHQUFYSUxJUVlnQVNBV0lBTW9BbXdnQmtFR2RrSHZBM0ZxTFFBQVFRSjBhaUlLS0FJQUlna29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FKS0FJRUlRc2dDaUFKUVFoQkRDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FLR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQWtvQWdRaEN5QUtJQWxCREVFSUlBRWdCVWtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VGSUFrdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0Noc01BUXNnQ1NnQ0JBdEZEUUVMSUFFZ0ZpQU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBWkJCblpCcWdGeGNuSnljaUlTUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUZheUVCQW44Z0JTQUNRUkIyU3dSQUlBa29BZ1FoRVNBTElBbEJDRUVNSUFFZ0JVa2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUJJQWt0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FSSUJGRklBc2JEQUVMSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0NTZ0NCQ0VSSUFzZ0NVRU1RUWdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0VVVWdFU0FMR3d3QkN5QUpLQUlFQ3lFRklCTWdEaUFNSUFVZ0VrR1F3QUZxTFFBQUlnbEdHellDZ0FRZ0NpQUtLQUlBUVlBUWNqWUNBQ0FOSUEwb0FnUkJnQVJ5TmdJRUlBWWdCU0FKYzBFWmRISkJnQWh5SVFZTElBRWdGaUFES0FKc0lBWkJDWFpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VMSUFrZ0NrRUlRUXdnQVNBRlNTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQXNnQzBVZ0VSc01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUXNnQ1NBS1FReEJDQ0FCSUFWSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQkViREFFTElBb29BZ1FMUlEwREN5QUJJQllnRFNnQ0JFRWFka0VFY1NBTlFRUnJJaEVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FHUVFsMlFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzTUFRc0NRQ0FHUVpDQWdBRnhEUUFnQVNBV0lBTW9BbXdnQmtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVJHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRVJzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJFWFpCQkhFZ0RVRUVheUlMS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVFZ2NqWUNBQ0FOSUEwb0FnUkJDSEkyQWdRZ0RVR01BbXNpQ3lBTEtBSUFRWUNBQ0hJMkFnQWdEVUdFQW1zaUN5QUxLQUlBUVlDQUFuSTJBZ0FnRFVHSUFtc2lDeUFMS0FJQUlBVWdDbk1pQlVFZmRISkJnSUFFY2pZQ0FDQUdJQVZCRTNSeVFSQnlJUVlMQWtBZ0JrR0FnWUFJY1EwQUlBRWdGaUFES0FKc0lBWkJBM1lpRVVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVNHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFaHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRWhzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlMS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnRVVHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdLQUFpQUxJQXNvQWdCQmdBSnlOZ0lBSUEwZ0RTZ0NCRUhBQUhJMkFnUWdCaUFGSUFwelFSWjBja0dBQVhJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFFZ0ZpQURLQUpzSUFaQkJuWWlFVUh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFWSkloSWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBU0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFvb0FnUWhDeUFKSUFwQkRFRUlJQUVnQlVraUVodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dFaHNNQVFzZ0NpZ0NCQXRGRFFBZ0FTQVdJQTBvQWdSQkYzWkJCSEVnRFVFRWF5SUxLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFVUdxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VSSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUkVnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNrWWJOZ0tBQkNBTElBc29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQUZJQXB6UVJsMGNrR0FDSEloQmdzZ0JrR0F3SUNBQkhFTkFTQUJJQllnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMEJJQUVnRmlBTktBSUVRUnAyUVFSeElBMUJCR3NpRVNnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJKQnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXdzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlSSWdDU0FLUVFoQkRDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0VpQVNSU0FQR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEVpQUpJQXBCREVFSUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0R4c01BUXNnQ2lnQ0JBc2hCU0FUSUE0Z0RDQUZJQXRCa01BQmFpMEFBQ0lLUmhzMkFvQUdJQkVnRVNnQ0FFR0FnQUZ5TmdJQUlBMGdEU2dDQkVHQUlISTJBZ1FnQlNBS2N5SUZRUngwSUFaeUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdCVUVTZEhKQkFuSTJBb2dDUVlEQUFISWhCZ3NnRFNBR1FmLy8vN1o3Y1RZQ0FBc2dEVUVFYWlFR0lCTkJCR29oQlNBVlFRRnFJaFZCd0FCSERRQUxJQTFCREdvaEJpQVRRWVFHYWlFRklCUkJQRWtnRkVFRWFpRVVEUUFMREFJTFFRRWdHM1FpQVVFQmRpQUJjaUVPSUFNb0FuZ2lCeUFXUVFKMGFrRU1haUVGSUFNb0FvQUJJUVlnQXlnQ0NDRUVJQU1vQWdRaEFTQURLQUlBSVFJZ0F5Z0NhQ0VKSUFNb0FuUWhFeUFYUVFoeEJFQUNRQ0FHUVFSSkRRQWdGZ1JBSUFOQjVBQnFJUWdnQTBIZ0FHb2hEU0FXUVF4c0lTUWdGa0VEZENFY1FRQWdEbXNoRlNBRFFSeHFJUXdEUUVFQUlSSURRQUpBQWtBQ2Z5QUZJZ2NvQWdBaUJRUkFBa0FnQlVHUWdJQUJjUTBBSUFFZ0RDQURLQUpzSUFWQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFTElBa2dDa0VNUVFnZ0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDMFVnQ3lBUEd3d0JDeUFLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVpKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0N5QUxSU0FQR3d0RkRRQWdBU0FNSUFjb0FnUkJFWFpCQkhFZ0IwRUVheUlMS0FJQVFSTjJRUUZ4SUFWQkRuWkJFSEVnQlVFUWRrSEFBSEVnQlVHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFUElBa2dDa0VNUVFnZ0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBZkd3d0JDeUFLS0FJRUlROGdDU0FLUVFoQkRDQUJJQVpKSWg4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FmR3dzaEJpQVRJQTRnRlNBR0lCbEJrTUFCYWkwQUFDSUtSaHMyQWdBZ0N5QUxLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBRklBWWdDbk5CRTNSeVFSQnlJUVVMQWtBZ0JVR0FnWUFJY1EwQUlBRWdEQ0FES0FKc0lBVkJBM1lpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVVka0VFY1NBSFFRUnJJZ3NvQWdCQkZuWkJBWEVnQlVFUGRrRVFjU0FGUVJOMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdGa0VDZEdvZ0RpQVZJQVlnR1VHUXdBRnFMUUFBSWdwR0d6WUNBQ0FMSUFzb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQlNBR0lBcHpRUlowY2tHQUFYSWhCUXNDUUNBRlFZQ0lnTUFBY1EwQUlBRWdEQ0FES0FKc0lBVkJCbllpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ3NvQWdCQkdYWkJBWEVnQlVFU2RrRVFjU0FGUVJaMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUxJQXNvQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFwelFSbDBja0dBQ0hJaEJRc2dCVUdBd0lDQUJIRU5BaUFCSUF3Z0F5Z0NiQ0FGUVFsMklnOUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FHU1NJWkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVpHd3dCQ3lBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFaSkloa2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBWkd3dEZEUUlnQVNBTUlBY29BZ1JCR25aQkJIRWdCMEVFYXlJTEtBSUFRUngyUVFGeElBVkJGWFpCRUhFZ0JVRVpka0hBQUhFZ0QwR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackRBRUxJQUVnRFNnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQTBnQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUtHd3dCQ3lBR0tBSUVJUWtnRFNBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBS0d3dEZCRUFnRFNFSkRBTUxJQUVnQ0NnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0FpQmpZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBWW9BZ1FoQ1NBSUlBWkJDRUVNSUFFZ0JVa2lDeHRxS0FJQUlnWTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFrZ0NVVWdDeHNMSVFvZ0FTQUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUxHd3dCQ3lBR0tBSUVJUWtnQ0NBR1FRaEJEQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBTEd3c2hCa0VBSVFVZ0NDRUpBa0FDUUFKQUFuOENRQUpBSUFZZ0NrRUJkSElPQkFBQkF3VUhDeUFCSUF3Z0J5Z0NCRUVSZGtFRWNTQUhRUVJySWdrb0FnQkJFM1pCQVhGeUlnOUJrTDRCYWkwQUFFRUNkR29pQ2lnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUxJQW9nQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBR0tBSUVJUXNnQ2lBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3c2hCU0FUSUE0Z0ZTQUZJQTlCa01BQmFpMEFBQ0lHUmhzMkFnQWdDU0FKS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUZJQVp6UVJOMElBRWdEQ0FES0FKc0xRQUNRUUowYWlJSktBSUFJZ1lvQWdBaUJXc2hBUUovSUFVZ0FrRVFkazBFUUNBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUW9nQ1NBR1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJ3UkFJQU1nQ1RZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUpOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQThiREFFTElBWW9BZ1FoQ2lBSklBWkJDRUVNSUFFZ0JVa2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQURJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FLSUFwRklBOGJDeUVHUVJCeUlnVWdCa1VOQVJvTElBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDaWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQVZCQTNaQnFnRnhjbkp5Y2lJWlFaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaER5QUxJQWxCREVFSUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VHSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FESUFRMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTlGSUE4Z0N4c01BUXNnQ1NnQ0JDRVBJQXNnQ1VFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBOGdEMFVnQ3hzTElRWWdFeUFXUVFKMGFpQU9JQlVnQmlBWlFaREFBV290QUFBaUNVWWJOZ0lBSUFvZ0NpZ0NBRUdBQW5JMkFnQWdCeUFIS0FJRVFjQUFjallDQkNBRklBWWdDWE5CRm5SeVFZQUJjZ3NoQlNBQklBd2dBeWdDYkNBRlFRWjJRZThEY1dvdEFBQkJBblJxSWdvb0FnQWlDU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBUTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQ0VMSUFvZ0NVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVY0VRQ0FESUFRMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc0xSUTBCQ3lBQklBd2dCeWdDQkVFWGRrRUVjU0FIUVFScklnb29BZ0JCR1haQkFYRWdCVUVTZGtFUWNTQUZRUloyUWNBQWNTQUZRUVoyUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUxLQUlBSWdrb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDU2dDQkF3Q0N5QUpLQUlFSVE4Z0N5QUpRUXhCQ0NBQklBWkpJZ3NiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUNVRUJhaUVFSUFrdEFBRWhCaUFKTFFBQVFmOEJSd1JBSUFNZ0JEWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFFTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUFzYkRBRUxJQWtvQWdRaER5QUxJQWxCQ0VFTUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQXNiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ2xHR3pZQ0FDQUtJQW9vQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFselFSbDBja0dBQ0hJaEJRc2dBU0FNSUFNb0Ftd2dCVUVKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFnc2dBU0FNSUFjb0FnUkJHblpCQkhFZ0IwRUVheUlMS0FJQVFSeDJRUUZ4SUFWQkZYWkJFSEVnQlVFWmRrSEFBSEVnQlVFSmRrR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackN5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhHU0FKSUFwQkRFRUlJQUVnQmtraUh4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFR0lBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUJsRklCa2dIeHNNQVFzZ0NpZ0NCQ0VaSUFrZ0NrRUlRUXdnQVNBR1NTSWZHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVY0VRQ0FESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQmtnR1VVZ0h4c0xJUVlnRXlBa2FpQU9JQlVnQmlBUFFaREFBV290QUFBaUNrWWJOZ0lBSUFzZ0N5Z0NBRUdBZ0FGeU5nSUFJQWNnQnlnQ0JFR0FJSEkyQWdRZ0JpQUtjeUlHUVJ4MElBVnlJQU1vQW54QkFuUWdCMm9pQlNBRktBSUVRUVJ5TmdJRUlBVWdCU2dDREVFQmNqWUNEQ0FGSUFVb0FnZ2dCa0VTZEhKQkFuSTJBZ2hCZ01BQWNpRUZDeUFISUFWQi8vLy90bnR4TmdJQUN5QUhRUVJxSVFVZ0UwRUVhaUVUSUJKQkFXb2lFaUFXUncwQUN5QUhRUXhxSVFVZ0V5QWthaUVUSUJSQkJHb2lGQ0FES0FLQUFTSUdRWHh4U1EwQUN3d0JDMEVFSUFaQmZIRWlCU0FGUVFSTkcwRUJheUlGUVh4eFFRUnFJUlFnQnlBRlFRRjBRWGh4YWtFVWFpRUZDeUFESUFRMkFnZ2dBeUFCTmdJRUlBTWdBallDQUNBRElBazJBbWdnRmtVTkF5QUdJQlJORFFNRFFFRUFJUVFnRkNBREtBS0FBVWNFUUFOQUlBTWdCU0FUSUFRZ0ZteEJBblJxSUE0Z0JFRUJFR0VnQkVFQmFpSUVJQU1vQW9BQklCUnJTUTBBQ3dzZ0JTQUZLQUlBUWYvLy83WjdjVFlDQUNBVFFRUnFJUk1nQlVFRWFpRUZJQkZCQVdvaUVTQVdSdzBBQ3d3REN3SkFJQVpCQkVrTkFDQVdCRUFnQTBIa0FHb2hDQ0FEUWVBQWFpRU5JQlpCREd3aEpDQVdRUU4wSVJ4QkFDQU9heUVWSUFOQkhHb2hEQU5BUVFBaEVnTkFBa0FDUUFKL0lBVWlCeWdDQUNJRkJFQUNRQ0FGUVpDQWdBRnhEUUFnQVNBTUlBTW9BbXdnQlVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFDQUJJQXdnQnlnQ0JFRVJka0VFY1NBSFFRUnJJZ3NvQWdCQkUzWkJBWEVnQlVFT2RrRVFjU0FGUVJCMlFjQUFjU0FGUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFS0lCTWdEaUFWSUFvZ0dVR1F3QUZxTFFBQUlnOUdHellDQUNBTElBc29BZ0JCSUhJMkFnQWdCeUFIS0FJRVFRaHlOZ0lFSUFkQmZpQURLQUo4YTBFQ2RHb2lCaUFHS0FJRVFZQ0FBbkkyQWdRZ0JpQUdLQUlBSUFvZ0QzTWlDa0VmZEhKQmdJQUVjallDQUNBR1FRUnJJZ1lnQmlnQ0FFR0FnQWh5TmdJQUlBVWdDa0VUZEhKQkVISWhCUXNDUUNBRlFZQ0JnQWh4RFFBZ0FTQU1JQU1vQW13Z0JVRURkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDeWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QVdRUUowYWlBT0lCVWdCaUFaUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFR0FBbkkyQWdBZ0J5QUhLQUlFUWNBQWNqWUNCQ0FGSUFZZ0NuTkJGblJ5UVlBQmNpRUZDd0pBSUFWQmdJaUF3QUJ4RFFBZ0FTQU1JQU1vQW13Z0JVRUdkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSZDJRUVJ4SUFkQkJHc2lDeWdDQUVFWmRrRUJjU0FGUVJKMlFSQnhJQVZCRm5aQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ25OQkdYUnlRWUFJY2lFRkN5QUZRWURBZ0lBRWNRMENJQUVnRENBREtBSnNJQVZCQ1hZaUQwSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVpKSWhrYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQmlBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQXlBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCa2JEQUVMSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQmtraUdSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUJrYkMwVU5BaUFCSUF3Z0J5Z0NCRUVhZGtFRWNTQUhRUVJySWdzb0FnQkJISFpCQVhFZ0JVRVZka0VRY1NBRlFSbDJRY0FBY1NBUFFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTUFRc2dBU0FOS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dEU0FHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FOSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFvYkMwVUVRQ0FOSVFrTUF3c2dBU0FJS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBQ0lHTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JpZ0NCQ0VKSUFnZ0JrRUlRUXdnQVNBRlNTSUxHMm9vQWdBaUJqWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ1NBSlJTQUxHd3NoQ2lBQklBWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFZb0FnUWhDU0FJSUFaQkNFRU1JQUVnQlVraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFzYkN5RUdRUUFoQlNBSUlRa0NRQUpBQWtBQ2Z3SkFBa0FnQmlBS1FRRjBjZzRFQUFFREJRY0xJQUVnRENBSEtBSUVRUkYyUVFSeElBZEJCR3NpQ1NnQ0FFRVRka0VCY1hJaUQwR1F2Z0ZxTFFBQVFRSjBhaUlLS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRc2dDaUFHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUFZb0FnUWhDeUFLSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUFvYkN5RUdJQk1nRGlBVklBWWdEMEdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUpJQWtvQWdCQklISTJBZ0FnQnlBSEtBSUVRUWh5TmdJRUlBZEJmaUFES0FKOGEwRUNkR29pQlNBRktBSUVRWUNBQW5JMkFnUWdCU0FGS0FJQUlBWWdDbk1pQmtFZmRISkJnSUFFY2pZQ0FDQUZRUVJySWdVZ0JTZ0NBRUdBZ0FoeU5nSUFJQVpCRTNRZ0FTQU1JQU1vQW13dEFBSkJBblJxSWdrb0FnQWlCaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJUUVJBSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhDaUFKSUFaQkRFRUlJQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRa2dCaTBBQVNFRklBWXRBQUJCL3dGSEJFQWdBeUFKTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEeHNNQVFzZ0JpZ0NCQ0VLSUFrZ0JrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FESUFrMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQW9nQ2tVZ0R4c0xJUVpCRUhJaUJTQUdSUTBCR2dzZ0FTQU1JQWNvQWdSQkZIWkJCSEVnQjBFRWF5SUtLQUlBUVJaMlFRRnhJQVZCRDNaQkVIRWdCVUVUZGtIQUFIRWdCVUVEZGtHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDeWdDQUNJSktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFUElBc2dDVUVNUVFnZ0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVlnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQkRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBTEd3d0JDeUFKS0FJRUlROGdDeUFKUVFoQkRDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FMR3dzaEJpQVRJQlpCQW5ScUlBNGdGU0FHSUJsQmtNQUJhaTBBQUNJSlJoczJBZ0FnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFVZ0JpQUpjMEVXZEhKQmdBRnlDeUVGSUFFZ0RDQURLQUpzSUFWQkJuWkI3d054YWkwQUFFRUNkR29pQ2lnQ0FDSUpLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRUxJQW9nQ1VFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0JEWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBS0d3dEZEUUVMSUFFZ0RDQUhLQUlFUVJkMlFRUnhJQWRCQkdzaUNpZ0NBRUVaZGtFQmNTQUZRUkoyUVJCeElBVkJGblpCd0FCeElBVkJCblpCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUpLQUlFREFJTElBa29BZ1FoRHlBTElBbEJERUVJSUFFZ0Jra2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUdJQWt0QUFCQi93RkhCRUFnQXlBRU5nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQVEyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnQ3hzTUFRc2dDU2dDQkNFUElBc2dDVUVJUVF3Z0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUUVnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdDeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDVVliTmdJQUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ1hOQkdYUnlRWUFJY2lFRkN5QUJJQXdnQXlnQ2JDQUZRUWwyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRHhzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdEeHNMUlEwQ0N5QUJJQXdnQnlnQ0JFRWFka0VFY1NBSFFRUnJJZ3NvQWdCQkhIWkJBWEVnQlVFVmRrRVFjU0FGUVJsMlFjQUFjU0FGUVFsMlFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTElRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVpJQWtnQ2tFTVFRZ2dBU0FHU1NJZkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnR1VVZ0dTQWZHd3dCQ3lBS0tBSUVJUmtnQ1NBS1FRaEJEQ0FCSUFaSkloOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdHU0FaUlNBZkd3c2hCaUFUSUNScUlBNGdGU0FHSUE5QmtNQUJhaTBBQUNJS1JoczJBZ0FnQ3lBTEtBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBR0lBcHpJZ1pCSEhRZ0JYSWdBeWdDZkVFQ2RDQUhhaUlGSUFVb0FnUkJCSEkyQWdRZ0JTQUZLQUlNUVFGeU5nSU1JQVVnQlNnQ0NDQUdRUkowY2tFQ2NqWUNDRUdBd0FCeUlRVUxJQWNnQlVILy8vKzJlM0UyQWdBTElBZEJCR29oQlNBVFFRUnFJUk1nRWtFQmFpSVNJQlpIRFFBTElBZEJER29oQlNBVElDUnFJUk1nRkVFRWFpSVVJQU1vQW9BQklnWkJmSEZKRFFBTERBRUxRUVFnQmtGOGNTSUZJQVZCQkUwYlFRRnJJZ1ZCZkhGQkJHb2hGQ0FISUFWQkFYUkJlSEZxUVJScUlRVUxJQU1nQkRZQ0NDQURJQUUyQWdRZ0F5QUNOZ0lBSUFNZ0NUWUNhQ0FXUlEwQ0lBWWdGRTBOQWdOQVFRQWhCQ0FVSUFNb0FvQUJSd1JBQTBBZ0F5QUZJQk1nQkNBV2JFRUNkR29nRGlBRVFRQVFZU0FFUVFGcUlnUWdBeWdDZ0FFZ0ZHdEpEUUFMQ3lBRklBVW9BZ0JCLy8vL3RudHhOZ0lBSUJOQkJHb2hFeUFGUVFScUlRVWdFVUVCYWlJUklCWkhEUUFMREFJTEEwQkJBQ0VWQTBBZ0JTRVRBa0FDUUFKL0lBWWlEU2dDQUNJR1JRUkFJQUVnQ0NnQ0FDSUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWdnQlVFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dDQ0FGUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFVb0FnUUxSUVJBSUFnaENRd0VDeUFCSUFjb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDU0FISUFWQkNFRU1JQUVnQmtraUN4dHFLQUlBSWdVMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWtnQ1VVZ0N4c01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUWtnQnlBRlFReEJDQ0FCSUFaSklnc2JhaWdDQUNJRk5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQmtFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnQ3hzTUFRc2dCU2dDQkFzaENpQUJJQVVvQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBRktBSUVJUWtnQnlBRlFRaEJEQ0FCSUFaSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQlVFQmFpRUVJQVV0QUFFaEFTQUZMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBTEd3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFVb0FnUWhDU0FISUFWQkRFRUlJQUVnQmtraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFRklBWXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JTZ0NCQXNoQlVFQUlRWWdCeUVKQWtBQ1FBSkFBbjhDUUFKQUlBVWdDa0VCZEhJT0JBQUJBd1VJQ3lBQklCWWdEU2dDQkVFUmRrRUVjU0FOUVFScklna29BZ0JCRTNaQkFYRnlJaEZCa0w0QmFpMEFBRUVDZEdvaUNpZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VMSUFvZ0JVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hCQ0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUXNnQ2lBRlFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQW9iREFFTElBVW9BZ1FMSVFVZ0V5QU9JQXdnQlNBUlFaREFBV290QUFBaUJrWWJOZ0lBSUFrZ0NTZ0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnQlNBR2MwRVRkQ0FCSUJZZ0F5Z0NiQzBBQWtFQ2RHb2lDU2dDQUNJRktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdCU2dDQkNFS0lBa2dCVUVJUVF3Z0FTQUdTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnVkJBV29oQ1NBRkxRQUJJUUVnQlMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdFUnNNQVFzZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUZLQUlFSVFvZ0NTQUZRUXhCQ0NBQklBWkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJrRUJhaUVKSUFZdEFBRWhCU0FHTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFrMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJFYkRBRUxJQVVvQWdRTElRVkJFSElpQmlBRlJRMEJHZ3NnQVNBV0lBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0JrRURka0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUN5Z0NBQ0lKS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NTZ0NCQ0VSSUFzZ0NVRUlRUXdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0N4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSktBSUVJUkVnQ3lBSlFReEJDQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEJTQUpMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQXNiREFFTElBa29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNVWWJOZ0tBQWlBS0lBb29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQUZJQWx6UVJaMGNrR0FBWElMSVFZZ0FTQVdJQU1vQW13Z0JrRUdka0h2QTNGcUxRQUFRUUowYWlJS0tBSUFJZ2tvQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFRklBa3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQXRGRFFFTElBRWdGaUFOS0FJRVFSZDJRUVJ4SUExQkJHc2lDaWdDQUVFWmRrRUJjU0FHUVJKMlFSQnhJQVpCRm5aQndBQnhJQVpCQm5aQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQWtvQWdRaEVTQUxJQWxCQ0VFTUlBRWdCVWtpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQXNiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDU2dDQkNFUklBc2dDVUVNUVFnZ0FTQUZTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBTEd3d0JDeUFKS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ2xHR3pZQ2dBUWdDaUFLS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBSmMwRVpkSEpCZ0FoeUlRWUxJQUVnRmlBREtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMERDeUFCSUJZZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWhFb0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc01BUXNDUUNBR1FaQ0FnQUZ4RFFBZ0FTQVdJQU1vQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVZKSWhFYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FSR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEN5QUpJQXBCREVFSUlBRWdCVWtpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0VSc01BUXNnQ2lnQ0JBdEZEUUFnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJTEtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRVJJQWtnQ2tFSVFRd2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnRHhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlSRWdDU0FLUVF4QkNDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBOGJEQUVMSUFvb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdCaUFGSUFwelFSTjBja0VRY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FCSUJZZ0F5Z0NiQ0FHUVFOMkloRkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRUxJQWtnQ2tFSVFRd2dBU0FGU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklBc2dDMFVnRWhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVZKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFvb0FnUUxSUTBBSUFFZ0ZpQU5LQUlFUVJSMlFRUnhJQTFCQkdzaUN5Z0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCRkJxZ0Z4Y25KeWNpSVNRWkMrQVdvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhFU0FKSUFwQkNFRU1JQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQVJJQkZGSUE4YkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRVJJQWtnQ2tFTVFRZ2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRVVVZ0VTQVBHd3dCQ3lBS0tBSUVDeUVGSUJNZ0RpQU1JQVVnRWtHUXdBRnFMUUFBSWdwR0d6WUNnQUlnQ3lBTEtBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0JTQUtjMEVXZEhKQmdBRnlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUJJQllnQXlnQ2JDQUdRUVoySWhGQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFaHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJJYkRBRUxJQW9vQWdRTFJRMEFJQUVnRmlBTktBSUVRUmQyUVFSeElBMUJCR3NpQ3lnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUJGQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQW9vQWdRaEVTQUpJQXBCQ0VFTUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQThiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDaWdDQkNFUklBa2dDa0VNUVFnZ0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVVnQkMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBUEd3d0JDeUFLS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ3BHR3pZQ2dBUWdDeUFMS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBS2MwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUUVnQVNBV0lBTW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQlVraUVSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUJFYkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FGU1NJUkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVJHd3dCQ3lBS0tBSUVDMFVOQVNBQklCWWdEU2dDQkVFYWRrRUVjU0FOUVFSckloRW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc0xJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VTSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQklnRWtVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUklnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU1JTQVNJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBTFFaREFBV290QUFBaUNrWWJOZ0tBQmlBUklCRW9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBVWdDbk1pQlVFY2RDQUdjaUFOSUEwb0FvUUNRUVJ5TmdLRUFpQU5JQTBvQW93Q1FRRnlOZ0tNQWlBTklBMG9Bb2dDSUFWQkVuUnlRUUp5TmdLSUFrR0F3QUJ5SVFZTElBMGdCa0gvLy8rMmUzRTJBZ0FMSUExQkJHb2hCaUFUUVFScUlRVWdGVUVCYWlJVlFjQUFSdzBBQ3lBTlFReHFJUVlnRTBHRUJtb2hCU0FVUVR4SklCUkJCR29oRkEwQUN3c2dBeUFFTmdJSUlBTWdBVFlDQkNBRElBSTJBZ0FnQXlBSk5nSm9Dd0pBSUJkQklIRkZEUUFnQXlBRFFlUUFhallDYUNBRElBTW9BZ1FnQXlnQ1pDSUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBTW9BZ0FpQkVFUWRrc0VRQ0FESUFFMkFnUWdBeUFHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnbEJBV29oQWlBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUlNQWdzZ0F5QUNOZ0lRSUFWQkNYUWdCR29oQkVFSElRSU1BUXNnQXlBQ05nSVFRUWdoQWlBRlFRaDBJQVJxSVFRTElBTWdBa0VCYXlJQ05nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0F5QUVJQUZCRUhScklnUTJBZ0FnQWtHQWdBSnhEUUFnQXlBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFFRFFBSkFJQUVOQUNBREtBSVFJZ0ZCQVdvaENTQUJMUUFCSVFVZ0FTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFFTUFnc2dBeUFKTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUVNQVFzZ0F5QUpOZ0lRUVFnaEFTQUZRUWgwSUFScUlRUUxJQU1nQVVFQmF5SUJOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQXlBQ0lBWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JFRVFka3NFUUNBRElBRTJBZ1FnQXlBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFJRFFBSkFJQUlOQUNBREtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFVZ0NTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFJTUFnc2dBeUFDTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUlNQVFzZ0F5QUNOZ0lRUVFnaEFpQUZRUWgwSUFScUlRUUxJQU1nQWtFQmF5SUNOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dBeUFFSUFGQkVIUnJJZ1EyQWdBZ0FrR0FnQUp4RFFBZ0F5QUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRRURRQUpBSUFFTkFDQURLQUlRSWdGQkFXb2hDU0FCTFFBQklRVWdBUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRRU1BZ3NnQXlBSk5nSVFJQVZCQ1hRZ0JHb2hCRUVISVFFTUFRc2dBeUFKTmdJUVFRZ2hBU0FGUVFoMElBUnFJUVFMSUFNZ0FVRUJheUlCTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0F5QUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCRUVRZGtzRVFDQURJQUUyQWdRZ0F5QUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdsQkFXb2hBaUFKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRSU1BZ3NnQXlBQ05nSVFJQVZCQ1hRZ0JHb2hCRUVISVFJTUFRc2dBeUFDTmdJUVFRZ2hBaUFGUVFoMElBUnFJUVFMSUFNZ0FrRUJheUlDTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQXlBRUlBRkJFSFJySWdRMkFnQWdBa0dBZ0FKeERRQWdBeUFHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUVEUUFKQUlBRU5BQ0FES0FJUUlnRkJBV29oQ1NBQkxRQUJJUVVnQVMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUVNQWdzZ0F5QUpOZ0lRSUFWQkNYUWdCR29oQkVFSElRRU1BUXNnQXlBSk5nSVFRUWdoQVNBRlFRaDBJQVJxSVFRTElBTWdBVUVCYXlJQk5nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dBeUFDSUFZb0FnQWlBV3NpQWpZQ0JDQUJJQVJCRUhaTEJFQWdBeUFCTmdJRUlBTWdCa0VJUVF3Z0FTQUNTeHRxS0FJQU5nSmtJQU1vQWdnaEFnTkFBa0FnQWcwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFSQmdQNERhaUVFUVFnaEFnd0NDeUFESUFrMkFoQWdCVUVKZENBRWFpRUVRUWNoQWd3QkN5QURJQWsyQWhCQkNDRUNJQVZCQ0hRZ0JHb2hCQXNnQXlBQ1FRRnJJZ0kyQWdnZ0F5QUVRUUYwSWdRMkFnQWdBeUFCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMREFFTElBTWdCQ0FCUVJCMGF5SUZOZ0lBSUFKQmdJQUNjUTBBSUFNZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBTmdKa0lBTW9BZ2doQkFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFSklBWXRBQUVoQVNBR0xRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQkF3Q0N5QURJQWsyQWhBZ0FVRUpkQ0FGYWlFRlFRY2hCQXdCQ3lBRElBazJBaEJCQ0NFRUlBRkJDSFFnQldvaEJRc2dBeUFFUVFGcklnUTJBZ2dnQXlBRlFRRjBJZ1UyQWdBZ0F5QUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDd3NnSjBVTkFDQURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdMUVFBZ0lVRUJhaUlCSUFGQkEwWWlBUnNoSVNBYklBRnJJUnNnS1VFQmFpSXBJQ0FvQWdoUERRRWdHMEVBU2cwQUN3c2dIaUFxYWlFZUlBTW9BaGdnQXk4QmNEc0FBQ0FvUVFGcUlpZ2dHaWdDTEVrTkFBc0xBa0FnSzBVTkFBSkFJQU1vQWhnaUFTQURLQUlRSWdWQkFtcExCRUFnSWtVTkFTQW1JQUVnQXlnQ0ZDSUdhellDT0NBbUlBVWdCbXMyQWpRZ0ppQUJJQVZyUVFKck5nSXdJQjFCQWtIZTlnQWdKa0V3YWhBVERBSUxJQU1vQWd3aUFVRURTUTBCSUNJRVFDQW1JQUUyQWxBZ0hVRUNRWjQzSUNaQjBBQnFFQk1NQWdzZ0ppQUJOZ0pBSUIxQkFrR2VOeUFtUVVCckVCTU1BUXNnSmlBQklBTW9BaFFpQm1zMkFpZ2dKaUFGSUFack5nSWtJQ1lnQVNBRmEwRUNhellDSUNBZFFRSkIzdllBSUNaQklHb1FFd3NnR2lnQ1BFVU5BQ0FESUN3MkFuUUxJREFvQWdRaEFTQWFLQUlNSUJvb0FnZ2dNQ2dDQUdzaEV5QXdLQUlRSWdaQkFYRUVRQ0F5S0FJY0lEaEJtQUZzYWlJSlFaQUJheWdDQUNBVGFpQUpRWmdCYXlnQ0FHc2hFd3NnQVdzaEJTQUdRUUp4QkVBZ01pZ0NIQ0E0UVpnQmJHb2lBVUdNQVdzb0FnQWdCV29nQVVHVUFXc29BZ0JySVFVTElCb29BandpQmlFQ0lBWkZCRUFnQXlnQ2RDRUNDeUFES0FLQUFTRU5JQU1vQW53aEJBSkFJQzhvQXFnR0lnbEZEUUFnRFVVZ0JFVnlJUUVnQ1VFZVRBUkFJQUVOQVVFQUlRZ0RRQ0FFSUFoc0lRTkJBQ0VCQTBBZ0FpQUJJQU5xUVFKMGFpSVhLQUlBSWdjZ0IwRWZkU0lLY3lBS2F5SUtJQWwyQkVBZ0YwRUFJQW9nTHlnQ3FBWjJJaGRySUJjZ0IwRUFTQnMyQWdBTElBRkJBV29pQVNBRVJ3MEFDeUFJUVFGcUlnZ2dEVWNOQUFzTUFRc2dBUTBBSUFKQkFDQUVJQTFzUVFKMEVCa2FDeUFHQkVBZ0JDQU5iQ0VHSUM4b0FoUkJBVVlFUUNBR1JRMEZRUUFoQVNBR1FRUlBCRUFnQmtGOGNTRUJRUUFoQXdOQUlBSWdBMEVDZEdvaUJTQUYvUUFDQUNKSC9Sc0FRUUp0L1JFZ1IvMGJBVUVDYmYwY0FTQkgvUnNDUVFKdC9Sd0NJRWY5R3dOQkFtMzlIQVA5Q3dJQUlBTkJCR29pQXlBQlJ3MEFDeUFCSUFaR0RRWUxBMEFnQWlBQlFRSjBhaUlGSUFVb0FnQkJBbTAyQWdBZ0FVRUJhaUlCSUFaSERRQUxEQVVMSUFaRkRRUWdNQ29DSUVNQUFBQS9sQ0ZOUVFBaEF3SkFJQVpCQkVrRVFDQUNJUUVNQVFzZ0FpQUdRWHh4SWdOQkFuUnFJUUVnVGYwVElVZEJBQ0VGQTBBZ0FpQUZRUUowYWlJSklFY2dDZjBBQWdEOStnSDk1Z0g5Q3dJQUlBVkJCR29pQlNBRFJ3MEFDeUFESUFaR0RRVUxBMEFnQVNCTklBRW9BZ0N5bERnQ0FDQUJRUVJxSVFFZ0EwRUJhaUlESUFaSERRQUxEQVFMSURjZ05tc2hGeUF2S0FJVVFRRkhEUUlnRFVVTkF5QXlLQUlrSWdZZ0JTQVhiQ0lGUVFKMGFpQVRRUUowYWlFSElBUkJmSEVpRzBFQmF5SUJRUVJ4SVJZZ055QUVJRFpxYTBFQ2RDRVVJQUZCQW5aQkFXcEIvdi8vL3dkeElSb2dCU0FUYWtFQ2RDQUdhaUFDYXlFZFFRQWhFeUFCUVFOSElRNERRRUVBSVFFQ1FDQWJSUTBBSUFRZ0Uyd2hCU0FISUJNZ0YyeEJBblJxSVFaQkFDRUpJQTRFUUFOQUlBWWdBVUVDZEdvZ0FpQUJJQVZxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBR0lBRkJCSElpQ0VFQ2RHb2dBaUFGSUFocVFRSjBhdjBBQWdBaVIvMGJBRUVDYmYwUklFZjlHd0ZCQW0zOUhBRWdSLzBiQWtFQ2JmMGNBaUJIL1JzRFFRSnQvUndEL1FzQ0FDQUJRUWhxSVFFZ0NVRUNhaUlKSUJwSERRQUxDeUFXRFFBZ0JpQUJRUUowYWlBQ0lBRWdCV3BCQW5ScS9RQUNBQ0pIL1JzQVFRSnQvUkVnUi8wYkFVRUNiZjBjQVNCSC9Sc0NRUUp0L1J3Q0lFZjlHd05CQW0zOUhBUDlDd0lBSUFGQkJHb2hBUXNDUUNBQklBUlBEUUFnQkNBVGJDRUZJQWNnRXlBWGJFRUNkR29oQ1FKQUFrQWdCQ0FCYXlJSVFRUlBCRUFnSFNBVElCUnNha0VQU3cwQkN5QUJJUVlNQVFzZ0FTQUZhaUVpSUFFZ0NFRjhjU0lLYWlFR1FRQWhBd05BSUFrZ0FTQURha0VDZEdvZ0FpQURJQ0pxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBRFFRUnFJZ01nQ2tjTkFBc2dDQ0FLUmcwQkN5QUdRUUZxSVFFZ0JDQUdhMEVCY1FSQUlBa2dCa0VDZEdvZ0FpQUZJQVpxUVFKMGFpZ0NBRUVDYlRZQ0FDQUJJUVlMSUFFZ0JFWU5BQ0FGUVFGcUlRRURRQ0FKSUFaQkFuUnFJZ2dnQWlBRklBWnFRUUowYWlnQ0FFRUNiVFlDQUNBSUlBSWdBU0FHYWtFQ2RHb29BZ0JCQW0wMkFnUWdCa0VDYWlJR0lBUkhEUUFMQ3lBVFFRRnFJaE1nRFVjTkFBc01Bd3NnSmlBYk5nSUFJQjFCQWtIbnd3QWdKaEFUQ3lBRktBSUFRUUEyQWdBTUFRc2dEVVVOQUNBRVJRMEFJRElvQWlRZ0JTQVhiRUVDZEdvZ0UwRUNkR29oQ1NBRVFYeHhJZ1ZCQW5RaEJpQXdLZ0lnUXdBQUFEK1VJazM5RXlGSFFRQWhDQ0FFUVFSSklSTURRQUpBQWtBZ0V3UkFJQUloQnlBSklRRkJBQ0VEREFFTElBWWdDV29oQVNBQ0lBWnFJUWRCQUNFREEwQWdDU0FEUVFKMElncHFJRWNnQWlBS2F2MEFBZ0Q5K2dIOTVnSDlDd0lBSUFOQkJHb2lBeUFGUncwQUN5QUhJUUlnQlNJRElBUkdEUUVMSUFjaEFnTkFJQUVnVFNBQ0tBSUFzcFE0QWdBZ0FVRUVhaUVCSUFKQkJHb2hBaUFEUVFGcUlnTWdCRWNOQUFzTElBa2dGMEVDZEdvaENTQUlRUUZxSWdnZ0RVY05BQXNMSUFBUUZDQW1RZUFBYWlRQUM5WUVBUWwvSUFBb0FpeEJDRThFUUNBQUtBSW9JUVZCQ0NFS0EwQWdBQ2dDREVFRmRDRUlJQUFvQWdBaEJDQUFLQUlrSVFNQ1FDQUFLQUlVSWdZZ0FDZ0NFQ0lCVFEwQUlBUWdDR29oQnlBQlFRRnFJUUlnQmlBQmEwRUJjUVJBSUFjZ0FVRUdkR29pQ1NBRklBRWdBMnhCQW5ScUlnSDlBQUlBL1FzQ0FDQUpJQUg5QUFJUS9Rc0NFQ0FDSVFFTElBSWdCa1lOQUFOQUlBY2dBVUVHZEdvaUFpQUZJQUVnQTJ4QkFuUnFJZ245QUFJQS9Rc0NBQ0FDSUFuOUFBSVEvUXNDRUNBSElBRkJBV29pQWtFR2RHb2lDU0FGSUFJZ0EyeEJBblJxSWdMOUFBSVEvUXNDRUNBSklBTDlBQUlBL1FzQ0FDQUJRUUpxSWdFZ0JrY05BQXNMQWtBZ0FDZ0NIQ0lHSUFBb0FoZ2lBVTBOQUNBRUlBaHJRU0JxSVFjZ0JTQUFLQUlJSUFOc1FRSjBhaUVJSUFGQkFXb2hBaUFHSUFGclFRRnhCRUFnQnlBQlFRWjBhaUlFSUFnZ0FTQURiRUVDZEdvaUFmMEFBZ0Q5Q3dJQUlBUWdBZjBBQWhEOUN3SVFJQUloQVFzZ0FpQUdSZzBBQTBBZ0J5QUJRUVowYWlJQ0lBZ2dBU0FEYkVFQ2RHb2lCUDBBQWdEOUN3SUFJQUlnQlAwQUFoRDlDd0lRSUFjZ0FVRUJhaUlDUVFaMGFpSUVJQWdnQWlBRGJFRUNkR29pQXYwQUFoRDlDd0lRSUFRZ0F2MEFBZ0Q5Q3dJQUlBRkJBbW9pQVNBR1J3MEFDd3NnQUJBbVFRQWhBU0FBS0FJZ0JFQURRQ0FGSUFBb0FpUWdBV3hCQW5ScUlnSWdBQ2dDQUNBQlFRVjBhaUlEL1FBQ0FQMExBZ0FnQWlBRC9RQUNFUDBMQWhBZ0FVRUJhaUlCSUFBb0FpQkpEUUFMQ3lBRlFTQnFJUVVnQ2tFSWFpSUtJQUFvQWl4TkRRQUxDeUFBS0FJQUVCUWdBQkFVQzYwTkFTTi9JQUFvQWl4QkNFOEVRQ0FBS0FJa0lncEJCWFFoRlNBS1FRZHNJUllnQ2tFR2JDRVhJQXBCQld3aEdDQUtRUU5zSVJrZ0NrRUJkQ0VhSUFBb0FpZ2lBU0FLUVJ4c2FpRWVJQUVnQ2tFWWJHb2hIeUFCSUFwQkZHeHFJU0FnQVNBS1FRUjBhaUVoSUFFZ0NrRU1iR29oSWlBQklBcEJBM1JxSVNNZ0FTQUtRUUowSWh0cUlTUkJDQ0VjQTBBZ0FDQUJJQUFvQWlSQkNCQkRJQUFRSmdKQUlBQW9BaUFpRFVVTkFDQVZJQjFzSVFnZ0FDZ0NBQ0VHUVFBaEJBSkFBa0FnRFVISEFVME5BQ0FCSUFnZ0pHb2lBeUFOUVFKMElnVnFJZ3RKSUFNZ0FTQUZhaUlIU1hFTkFDQUJJQWdnSTJvaUFpQUZhaUlNU1NBQ0lBZEpjUTBBSUFFZ0JTQUlJQ0pxSWdscUlnVkpJQWNnQ1V0eERRQWdCaUFIU1NBQklBWWdEVUVGZEdvaURrRWNheUlQU1hFTkFDQUJJQTVCR0dzaUVFa2dCa0VFYWlJUklBZEpjUTBBSUFFZ0RrRVVheUlTU1NBR1FRaHFJaE1nQjBseERRQWdCeUFHUVF4cUloUkxJQUVnRGtFUWF5SUhTWEVOQUNBRElBeEpJQUlnQzBseERRQWdBeUFGU1NBSklBdEpjUTBBSUFNZ0Qwa2dCaUFMU1hFTkFDQURJQkJKSUFzZ0VVdHhEUUFnQXlBU1NTQUxJQk5MY1EwQUlBTWdCMGtnQ3lBVVMzRU5BQ0FDSUFWSklBa2dERWx4RFFBZ0FpQVBTU0FHSUF4SmNRMEFJQUlnRUVrZ0RDQVJTM0VOQUNBQ0lCSkpJQXdnRTB0eERRQWdBaUFIU1NBTUlCUkxjUTBBSUFrZ0Qwa2dCU0FHUzNFTkFDQUpJQkJKSUFVZ0VVdHhEUUFnQ1NBU1NTQUZJQk5MY1EwQUlBY2dDVXNnQlNBVVMzRU5BQ0FOUVh4eElRUkJBQ0VEQTBBZ0FTQURRUUowYWlBR0lBTkJCWFJxSWdKQjRBQnFJQUpCUUdzZ0FrRWdhaUFDL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBU0FESUFwcVFRSjBhaUFDUWVRQWFpQUNRY1FBYWlBQ1FTUnFJQUw5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUJJQU1nR21wQkFuUnFJQUpCNkFCcUlBSkJ5QUJxSUFKQktHb2dBdjFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFaYWtFQ2RHb2dBa0hzQUdvZ0FrSE1BR29nQWtFc2FpQUMvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnRFVZTkFRc0RRQ0FCSUFSQkFuUnFJQVlnQkVFRmRHb2lBeW9DQURnQ0FDQUJJQVFnQ21wQkFuUnFJQU1xQWdRNEFnQWdBU0FFSUJwcVFRSjBhaUFES2dJSU9BSUFJQUVnQkNBWmFrRUNkR29nQXlvQ0REZ0NBQ0FFUVFGcUlnUWdEVWNOQUFzTElBQW9BZ0FoQmtFQUlRUUNRQ0FOUVROTkRRQWdDQ0FoYWlJRElBZ2dJR29pQWlBTlFRSjBJZ1ZxSWd0SklBSWdBeUFGYWlJSFNYRU5BQ0FESUFnZ0gyb2lDU0FGYWlJTVNTQUhJQWxMY1EwQUlBTWdDQ0FlYWlJSUlBVnFJZ1ZKSUFjZ0NFdHhEUUFnQXlBR0lBMUJCWFJxSWc1QkRHc2lEMGtnQmtFUWFpSVFJQWRKY1EwQUlBTWdEa0VJYXlJUlNTQUdRUlJxSWhJZ0IwbHhEUUFnQXlBT1FRUnJJaE5KSUFaQkdHb2lGQ0FIU1hFTkFDQURJQTVKSUFaQkhHb2lBeUFIU1hFTkFDQUNJQXhKSUFrZ0MwbHhEUUFnQWlBRlNTQUlJQXRKY1EwQUlBSWdEMGtnQ3lBUVMzRU5BQ0FDSUJGSklBc2dFa3R4RFFBZ0FpQVRTU0FMSUJSTGNRMEFJQUlnRGtrZ0F5QUxTWEVOQUNBSUlBeEpJQVVnQ1V0eERRQWdDU0FQU1NBTUlCQkxjUTBBSUFrZ0VVa2dEQ0FTUzNFTkFDQUpJQk5KSUF3Z0ZFdHhEUUFnQ1NBT1NTQURJQXhKY1EwQUlBZ2dEMGtnQlNBUVMzRU5BQ0FJSUJGSklBVWdFa3R4RFFBZ0NDQVRTU0FGSUJSTGNRMEFJQWdnRGtrZ0F5QUZTWEVOQUNBTlFYeHhJUVJCQUNFREEwQWdBU0FESUJ0cVFRSjBhaUFHSUFOQkJYUnFJZ0pCOEFCcUlBSkIwQUJxSUFKQk1Hb2dBdjFjQWhEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFZYWtFQ2RHb2dBa0gwQUdvZ0FrSFVBR29nQWtFMGFpQUMvVndDRlAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FTQURJQmRxUVFKMGFpQUNRZmdBYWlBQ1FkZ0FhaUFDUVRocUlBTDlYQUlZL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQklBTWdGbXBCQW5ScUlBSkIvQUJxSUFKQjNBQnFJQUpCUEdvZ0F2MWNBaHo5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQTFHRFFFTEEwQWdBU0FFSUJ0cVFRSjBhaUFHSUFSQkJYUnFJZ01xQWhBNEFnQWdBU0FFSUJocVFRSjBhaUFES2dJVU9BSUFJQUVnQkNBWGFrRUNkR29nQXlvQ0dEZ0NBQ0FCSUFRZ0ZtcEJBblJxSUFNcUFodzRBZ0FnQkVFQmFpSUVJQTFIRFFBTEN5QWRRUUZxSVIwZ0FTQVZhaUVCSUJ4QkNHb2lIQ0FBS0FJc1RRMEFDd3NnQUNnQ0FCQVVJQUFRRkF0ekFRSi9JQUFvQWh3aUFVRUlhaUlESUFBb0FpQWlBazBFUUFOQUlBQWdBQ2dDR0NBQlFRSjBhaUFBS0FJVVFRZ1FOaUFESWdGQkNHb2lBeUFBS0FJZ0lnSk5EUUFMQ3lBQklBSkpCRUFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFFnQWlBQmF4QTJDeUFBS0FJQUVCUWdBQkFVQzBRQUlBQW9BaHdpQVNBQUtBSWdTUVJBQTBBZ0FDQUFLQUlZSUFBb0FoUWdBV3hCQW5ScUVHWWdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUFLQUlBRUJRZ0FCQVVDd1VBRUc0QUN3WUFFSmtCQUFzTkFCQUxJQUJCZ0FGcUVBb0FDd1VBRUc0QUMyd0JBWDhnQUVRQUFBQUFBQUFBQUJBTkdnSkFRY2pmQVNnQ0FFRWJRUnBCRGlBQVFRRkdHeUFBUVFKR0d5SUFRUUZyZGtFQmNRUkFRY2pnQVVISTRBRW9BZ0JCQVNBQVFRRnJkSEkyQWdBTUFRc2dBRUVDZEVHZ3lRRnFLQUlBSWdJRVFDQUFJQUlSQWdBTEN3dW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQllhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQllhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0M2WUZBZ1orQkg4Z0FTQUJLQUlBUVFkcVFYaHhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlRSWdBU2tEQ0NFSEl3QkJJR3NpQ0NRQUlBZEMvLy8vLy8vL1A0TWhCQUorSUFkQ01JaEMvLzhCZ3lJRHB5SUtRWUg0QUd0Qi9ROU5CRUFnQkVJRWhpQUNRanlJaENFRElBcEJnUGdBYTYwaEJBSkFJQUpDLy8vLy8vLy8vLzhQZ3lJQ1FvR0FnSUNBZ0lDQUNGb0VRQ0FEUWdGOElRTU1BUXNnQWtLQWdJQ0FnSUNBZ0FoU0RRQWdBMElCZ3lBRGZDRURDMElBSUFNZ0EwTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJTQUVmQXdCQ3dKQUlBSWdCSVJRRFFBZ0EwTC8vd0ZTRFFBZ0JFSUVoaUFDUWp5SWhFS0FnSUNBZ0lDQUJJUWhBa0wvRHd3QkN5QUtRZjZIQVVzRVFFSUFJUUpDL3c4TUFRdEJnUGdBUVlINEFDQURVQ0lCR3lJQUlBcHJJZ2xCOEFCS0JFQkNBQ0VDUWdBTUFRc2dBaUVESUFRZ0JFS0FnSUNBZ0lEQUFJUWdBUnNpQlNFR0FrQkJnQUVnQ1dzaUFVSEFBSEVFUUNBQ0lBRkJRR3F0aGlFR1FnQWhBd3dCQ3lBQlJRMEFJQVlnQWEwaUJJWWdBMEhBQUNBQmE2MkloQ0VHSUFNZ0JJWWhBd3NnQ0NBRE53TVFJQWdnQmpjREdBSkFJQWxCd0FCeEJFQWdCU0FKUVVCcXJZZ2hBa0lBSVFVTUFRc2dDVVVOQUNBRlFjQUFJQWxycllZZ0FpQUpyU0lEaUlRaEFpQUZJQU9JSVFVTElBZ2dBamNEQUNBSUlBVTNBd2dnQ0NrRENFSUVoaUFJS1FNQUlnTkNQSWlFSVFJQ1FDQUFJQXBISUFncEF4QWdDQ2tER0lSQ0FGSnhyU0FEUXYvLy8vLy8vLy8vRDRPRUlnTkNnWUNBZ0lDQWdJQUlXZ1JBSUFKQ0FYd2hBZ3dCQ3lBRFFvQ0FnSUNBZ0lDQUNGSU5BQ0FDUWdHRElBSjhJUUlMSUFKQ2dJQ0FnSUNBZ0FpRklBSWdBa0wvLy8vLy8vLy9CMVlpQUJzaEFpQUFyUXNoQXlBSVFTQnFKQUFnQjBLQWdJQ0FnSUNBZ0lCL2d5QURRalNHaENBQ2hMODVBd0FMOUJjREVuOEJmQU4rSXdCQnNBUnJJZ3drQUNBTVFRQTJBaXdDUUNBQnZTSVpRZ0JUQkVCQkFTRVFRYm9JSVJRZ0Fab2lBYjBoR1F3QkN5QUVRWUFRY1FSQVFRRWhFRUc5Q0NFVURBRUxRY0FJUWJzSUlBUkJBWEVpRUJzaEZDQVFSU0VYQ3dKQUlCbENnSUNBZ0lDQWdQai9BSU5DZ0lDQWdJQ0FnUGovQUZFRVFDQUFRU0FnQWlBUVFRTnFJZ1lnQkVILy8zdHhFQ0FnQUNBVUlCQVFIaUFBUVpJSlFmWUtJQVZCSUhFaUF4dEIrd2xCbndzZ0F4c2dBU0FCWWh0QkF4QWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBNQVFzZ0RFRVFhaUVSQWtBQ1FBSkFJQUVnREVFc2FoQndJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWhWQjRRQkhEUUVNQXdzZ0JVRWdjaUlWUWVFQVJnMENJQXdvQWl3aEN3d0JDeUFNSUFaQkhXc2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0EwRUFTQnNoQ2lBTVFUQnFRYUFDUVFBZ0MwRUFUaHRxSWc0aEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBTFFRQk1CRUFnQ3lFSklBY2hCaUFPSVFnTUFRc2dEaUVJSUFzaENRTkFRUjBnQ1NBSlFSMVBHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoRzBJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHNFo4SWhwQ2dKVHIzQU9BSWhsQ2dPeVVvd3grSUJwOFBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBYVFvQ1U2OXdEVkEwQUlBaEJCR3NpQ0NBWlBnSUFDd05BSUFnZ0J5SUdTUVJBSUFaQkJHc2lCeWdDQUVVTkFRc0xJQXdnRENnQ0xDQURheUlKTmdJc0lBWWhCeUFKUVFCS0RRQUxDeUFKUVFCSUJFQWdDa0VaYWtFSmJrRUJhaUVTSUJWQjVnQkdJUk1EUUVFSlFRQWdDV3NpQXlBRFFRbFBHeUVOQWtBZ0JpQUlUUVJBSUFnb0FnQkZRUUowSVFjTUFRdEJnSlRyM0FNZ0RYWWhGa0YvSUExMFFYOXpJUTlCQUNFSklBZ2hCd05BSUFjZ0J5Z0NBQ0lESUExMklBbHFOZ0lBSUFNZ0QzRWdGbXdoQ1NBSFFRUnFJZ2NnQmtrTkFBc2dDQ2dDQUVWQkFuUWhCeUFKUlEwQUlBWWdDVFlDQUNBR1FRUnFJUVlMSUF3Z0RDZ0NMQ0FOYWlJSk5nSXNJQTRnQnlBSWFpSUlJQk1iSWdNZ0VrRUNkR29nQmlBR0lBTnJRUUoxSUJKS0d5RUdJQWxCQUVnTkFBc0xRUUFoQ1FKQUlBWWdDRTBOQUNBT0lBaHJRUUoxUVFsc0lRbEJDaUVISUFnb0FnQWlBMEVLU1EwQUEwQWdDVUVCYWlFSklBTWdCMEVLYkNJSFR3MEFDd3NnQ2lBSlFRQWdGVUhtQUVjYmF5QVZRZWNBUmlBS1FRQkhjV3NpQXlBR0lBNXJRUUoxUVFsc1FRbHJTQVJBSUF4Qk1HcEJoR0JCcEdJZ0MwRUFTQnRxSUFOQmdNZ0FhaUlMUVFsdElnTkJBblJxSVExQkNpRUhJQU5CZDJ3Z0Myb2lBMEVIVEFSQUEwQWdCMEVLYkNFSElBTkJBV29pQTBFSVJ3MEFDd3NDUUNBTktBSUFJZ3NnQ3lBSGJpSVNJQWRzSWc5R0lBMUJCR29pQXlBR1JuRU5BQ0FMSUE5cklRc0NRQ0FTUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNOQVNBSUlBMVBEUUVnRFVFRWF5MEFBRUVCY1VVTkFRdEVBUUFBQUFBQVFFTWhBUXRFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnQXlBR1JodEVBQUFBQUFBQStEOGdDeUFIUVFGMklnTkdHeUFESUF0TEd5RVlBa0FnRncwQUlCUXRBQUJCTFVjTkFDQVltaUVZSUFHYUlRRUxJQTBnRHpZQ0FDQUJJQmlnSUFGaERRQWdEU0FISUE5cUlnTTJBZ0FnQTBHQWxPdmNBMDhFUUFOQUlBMUJBRFlDQUNBSUlBMUJCR3NpRFVzRVFDQUlRUVJySWdoQkFEWUNBQXNnRFNBTktBSUFRUUZxSWdNMkFnQWdBMEgvayt2Y0Ewc05BQXNMSUE0Z0NHdEJBblZCQ1d3aENVRUtJUWNnQ0NnQ0FDSURRUXBKRFFBRFFDQUpRUUZxSVFrZ0F5QUhRUXBzSWdkUERRQUxDeUFOUVFScUlnTWdCaUFESUFaSkd5RUdDd05BSUFZaUN5QUlUU0lIUlFSQUlBWkJCR3NpQmlnQ0FFVU5BUXNMQWtBZ0ZVSG5BRWNFUUNBRVFRaHhJUk1NQVFzZ0NVRi9jMEYvSUFwQkFTQUtHeUlHSUFsS0lBbEJlMHB4SWdNYklBWnFJUXBCZjBGK0lBTWJJQVZxSVFVZ0JFRUljU0lURFFCQmR5RUdBa0FnQncwQUlBdEJCR3NvQWdBaUQwVU5BRUVLSVFOQkFDRUdJQTlCQ25BTkFBTkFJQVlpQjBFQmFpRUdJQThnQTBFS2JDSURjRVVOQUFzZ0IwRi9jeUVHQ3lBTElBNXJRUUoxUVFsc0lRTWdCVUZmY1VIR0FFWUVRRUVBSVJNZ0NpQURJQVpxUVFscklnTkJBQ0FEUVFCS0d5SURJQU1nQ2tvYklRb01BUXRCQUNFVElBb2dBeUFKYWlBR2FrRUpheUlEUVFBZ0EwRUFTaHNpQXlBRElBcEtHeUVLQzBGL0lRMGdDa0g5Ly8vL0IwSCsvLy8vQnlBS0lCTnlJZzhiU2cwQklBb2dEMEVBUjJwQkFXb2hGZ0pBSUFWQlgzRWlCMEhHQUVZRVFDQUpJQlpCLy8vLy93ZHpTZzBESUFsQkFDQUpRUUJLR3lFR0RBRUxJQkVnQ1NBSlFSOTFJZ056SUFOcnJTQVJFQzhpQm10QkFVd0VRQU5BSUFaQkFXc2lCa0V3T2dBQUlCRWdCbXRCQWtnTkFBc0xJQVpCQW1zaUVpQUZPZ0FBSUFaQkFXdEJMVUVySUFsQkFFZ2JPZ0FBSUJFZ0Vtc2lCaUFXUWYvLy8vOEhjMG9OQWdzZ0JpQVdhaUlESUJCQi8vLy8vd2R6U2cwQklBQkJJQ0FDSUFNZ0VHb2lDU0FFRUNBZ0FDQVVJQkFRSGlBQVFUQWdBaUFKSUFSQmdJQUVjeEFnQWtBQ1FBSkFJQWRCeGdCR0JFQWdERUVRYWtFSmNpRUZJQTRnQ0NBSUlBNUxHeUlESVFnRFFDQUlOUUlBSUFVUUx5RUdBa0FnQXlBSVJ3UkFJQVlnREVFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdERUVRYWtzTkFBc01BUXNnQlNBR1J3MEFJQVpCQVdzaUJrRXdPZ0FBQ3lBQUlBWWdCU0FHYXhBZUlBaEJCR29pQ0NBT1RRMEFDeUFQQkVBZ0FFSHZERUVCRUI0TElBZ2dDMDhOQVNBS1FRQk1EUUVEUUNBSU5RSUFJQVVRTHlJR0lBeEJFR3BMQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMQ3lBQUlBWkJDU0FLSUFwQkNVNGJFQjRnQ2tFSmF5RUdJQWhCQkdvaUNDQUxUdzBESUFwQkNVb2dCaUVLRFFBTERBSUxBa0FnQ2tFQVNBMEFJQXNnQ0VFRWFpQUlJQXRKR3lFRElBeEJFR3BCQ1hJaEN5QUlJUWNEUUNBTElBYzFBZ0FnQ3hBdklnWkdCRUFnQmtFQmF5SUdRVEE2QUFBTEFrQWdCeUFJUndSQUlBWWdERUVRYWswTkFRTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTUFRc2dBQ0FHUVFFUUhpQUdRUUZxSVFZZ0NpQVRja1VOQUNBQVFlOE1RUUVRSGdzZ0FDQUdJQXNnQm1zaUJTQUtJQVVnQ2tnYkVCNGdDaUFGYXlFS0lBZEJCR29pQnlBRFR3MEJJQXBCQUU0TkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJBZ0lBQWdFaUFSSUJKckVCNE1BZ3NnQ2lFR0N5QUFRVEFnQmtFSmFrRUpRUUFRSUFzZ0FFRWdJQUlnQ1NBRVFZREFBSE1RSUNBQ0lBa2dBaUFKU2hzaERRd0JDeUFVSUFWQkduUkJIM1ZCQ1hGcUlRa0NRQ0FEUVF0TERRQkJEQ0FEYXlFR1JBQUFBQUFBQURCQUlSZ0RRQ0FZUkFBQUFBQUFBREJBb2lFWUlBWkJBV3NpQmcwQUN5QUpMUUFBUVMxR0JFQWdHQ0FCbWlBWW9hQ2FJUUVNQVFzZ0FTQVlvQ0FZb1NFQkN5QVJJQXdvQWl3aUJ5QUhRUjkxSWdaeklBWnJyU0FSRUM4aUJrWUVRQ0FHUVFGcklnWkJNRG9BQUFzZ0VFRUNjaUVLSUFWQklIRWhDeUFHUVFKcklnNGdCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4UlNBRFFRQk1jU0VJSUF4QkVHb2hCd05BSUFjaUJRSi9JQUdaUkFBQUFBQUFBT0JCWXdSQUlBR3FEQUVMUVlDQWdJQjRDeUlHUVpESkFXb3RBQUFnQzNJNkFBQWdBU0FHdDZGRUFBQUFBQUFBTUVDaUlRRUNRQ0FGUVFGcUlnY2dERUVRYW10QkFVY05BQ0FCUkFBQUFBQUFBQUFBWVNBSWNRMEFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMUVg4aERTQURRZjMvLy84SElBb2dFU0FPYXlJSWFpSUdhMG9OQUNBQVFTQWdBaUFHSUFOQkFtb2dCeUFNUVJCcUlnVnJJZ2NnQjBFQ2F5QURTQnNnQnlBREd5SURhaUlHSUFRUUlDQUFJQWtnQ2hBZUlBQkJNQ0FDSUFZZ0JFR0FnQVJ6RUNBZ0FDQUZJQWNRSGlBQVFUQWdBeUFIYTBFQVFRQVFJQ0FBSUE0Z0NCQWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBMSUF4QnNBUnFKQUFnRFFzRUFFSUFDd1FBUVFBTEhBQWdBQ2dDUEJBUklnQUVmMEhVelFFZ0FEWUNBRUYvQlVFQUN3dktBZ0VIZnlNQVFTQnJJZ01rQUNBRElBQW9BaHdpQkRZQ0VDQUFLQUlVSVFVZ0F5QUNOZ0ljSUFNZ0FUWUNHQ0FESUFVZ0JHc2lBVFlDRkNBQklBSnFJUVZCQWlFR0lBTkJFR29oQVFKL0EwQUNRQUpBQWtBZ0FDZ0NQQ0FCSUFZZ0EwRU1haEFCSWdRRWYwSFV6UUVnQkRZQ0FFRi9CVUVBQzBVRVFDQUZJQU1vQWd3aUIwWU5BU0FIUVFCT0RRSU1Bd3NnQlVGL1J3MENDeUFBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1Bd3NnQVNBSElBRW9BZ1FpQ0VzaUNVRURkR29pQkNBSElBaEJBQ0FKRzJzaUNDQUVLQUlBYWpZQ0FDQUJRUXhCQkNBSkcyb2lBU0FCS0FJQUlBaHJOZ0lBSUFVZ0Iyc2hCU0FHSUFscklRWWdCQ0VCREFFTEN5QUFRUUEyQWh3Z0FFSUFOd01RSUFBZ0FDZ0NBRUVnY2pZQ0FFRUFJQVpCQWtZTkFCb2dBaUFCS0FJRWF3c2dBMEVnYWlRQUMxSUJBWDhnQUNnQ1BDTUFRUkJySWdBa0FDQUJweUFCUWlDSXB5QUNRZjhCY1NBQVFRaHFFQWtpQWdSL1FkVE5BU0FDTmdJQVFYOEZRUUFMSVFJZ0FDa0RDQ0VCSUFCQkVHb2tBRUovSUFFZ0Foc0xCZ0FnQUJBQUN3WUFJQUFRQXd2dmdRRUZBM3d5ZndoN0EzNEdmU01BUWVEQUFHc2lHaVFBSUJwQkFEWUNJRUVDSVE0Q1FBSkFJQUFvQWdBaUNFR05sSnpVQUVZTkFDQUlRZitmL1k4RlJ3UkFBa0FnQ0VHQWdJRGdBRWNOQUNBQUtBSUVRZXFnZ1lFQ1J3MEFJQUFvQWdoQmpaU2MxQUJHRFFJTFFjMElFQUJCQVNFT0RBSUxRUUFoRGdzQ2YwRUFRUUZCNEFBUUZ5SUlSUTBBR2lBSVFRRTJBa3dDUUFKQUFrQUNRQ0FPRGdNQUF3RURDeUFJUWNRQU5nSllJQWhCeFFBMkFsUWdDRUhHQURZQ1VDQUlRY2NBTmdJUUlBaEJ5QUEyQWdRZ0NFSEpBRFlDSENBSVFjb0FOZ0lZSUFoQnl3QTJBaFFnQ0VITUFEWUNBQ0FJUWMwQU5nSmNJQWhCemdBMkFpd2dDRUhQQURZQ0tDQUlRZEFBTmdJa0lBaEIwUUEyQWlBZ0NFSFNBRFlDRENBSVFkTUFOZ0lJSUFnUVZpSU5OZ0l3SUEwTkFRd0NDeUFJUWRRQU5nSllJQWhCMVFBMkFsUWdDRUhXQURZQ1VDQUlRZGNBTmdJUUlBaEIyQUEyQWdRZ0NFSFpBRFlDWENBSVFkb0FOZ0lzSUFoQjJ3QTJBaWdnQ0VIY0FEWUNKQ0FJUWQwQU5nSWdJQWhCM2dBMkFod2dDRUhmQURZQ0dDQUlRZUFBTmdJVUlBaEI0UUEyQWd3Z0NFSGlBRFlDQ0NBSVFlTUFOZ0lBSUFnQ2YwRUJRWWdCRUJjaURRUkFJQTBRVmlJVU5nSUFBa0FnRkVVTkFDQU4vUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDYkNBTlFRQTZBSHdnRFJBNUloUTJBZ1FnRkVVTkFDQU5FRGtpRkRZQ0NDQVVSUTBBSUEwTUFnc2dEUkI5QzBFQUN5SU5OZ0l3SUExRkRRRUxJQWhCQVRZQ1NDQUlRUUUyQWtBZ0NFRUFOZ0k4SUFoQ0FEY0NOQ0FJUVFFMkFrUWdDQXdCQ3lBSUVCUkJBQXNpRFFSQUlBMUJBRFlDUENBTlFlUUFOZ0pJQ3lBTkJFQWdEVUVBTmdJNElBMUI1UUEyQWtRTElBMEVRQ0FOUVFBMkFqUWdEVUhtQURZQ1FBc2dHa0VrYWlJSUJFQWdDRUVBUWJqQUFCQVpJZ2hCQURZQ3VFQWdDRUovTndLSVFBc2dBd1JBSUJvZ0dpZ0MzRUJCQVhJMkF0eEFDeUFhSUFFMkFod2dHaUFBTmdJWUlCb2dBRFlDRkVFQklRNUJBQ0VCQWtBZ0drRVVhaUlJUlEwQVFRRkJ5QUFRRnlJQUJIOENmeUFBUVlDQXdBQTJBa0FnQUVHQWdNQUFFQmdpRkRZQ0lDQVVSUVJBSUFBUUZFRUFEQUVMSUFBZ0ZEWUNKQ0FBUVFJMkFod2dBRUVETmdJWUlBQkJCRFlDRkNBQVFRVTJBaEFnQUVFR05nSXNJQUJCQ0RZQ0tDQUFJQUFvQWtSQkFuSTJBa1FnQUFzRlFRQUxJZ0JGRFFBZ0FBUkFJQUJCQURZQ0JDQUFJQWcyQWdBTElBZzFBZ2doUWlBQUJFQWdBQ0JDTndNSUN3SkFJQUJGRFFBZ0FDMEFSRUVDY1VVTkFDQUFRY0FBTmdJUUN5QUFCRUFnQUVIQ0FEWUNHQXNnQUFSQUlBQkJ3d0EyQWh3TElBQWhBUXNnQVNFQUFuOGdHa0VrYWlFQkFrQWdEVVVOQUNBQlJRMEFJQTBvQWt4RkJFQWdEVUUwYWtFQlFZbk5BRUVBRUJOQkFBd0NDeUFOS0FJd0lBRWdEU2dDR0JFREFFRUJJUWtMSUFrTFJRUkFRZHdJRUFBZ0FCQTlJQTBRUGd3QkN3Si9JQnBCSUdvaEFVRUFJUWdDUUNBQVJRMEFJQTFGRFFBZ0RTZ0NURVVFUUNBTlFUUnFRUUZCMnMwQVFRQVFFMEVBREFJTElBQWdEU2dDTUNBQklBMUJOR29nRFNnQ0FCRUJBQ0VJQ3lBSUMwVUVRRUg0Q0JBQUlBQVFQU0FORUQ0Z0dpZ0NJQkFsREFFTElCb29BaUFoQVVFQUlRZ0NRQ0FOUlEwQUlBQkZEUUFnRFNnQ1RFVU5BQ0FOS0FJd0lBQWdBU0FOUVRScUlBMG9BZ1FSQVFBaENBc0NRQ0FJQkVCQkFDRUlBa0FnRFVVTkFDQUFSUTBBSUEwb0FreEZEUUFnRFNnQ01DQUFJQTFCTkdvZ0RTZ0NFQkVBQUNFSUN5QUlEUUVMUWY4SkVBQWdEUkErSUFBUVBTQWFLQUlnRUNVTUFRc2dBQkE5SUEwUVBpQWFLQUlnSWhRb0Fod2lBQVJBSUFBUUZDQWFLQUlnSWhSQ0FEY0NIQXNnRkNnQ0VDRWhBa0FDUUNBQ1JRUkFBa0FnQkVVTkFDQWhRUVJIRFFCQkFTRVpRUVFoSVF3REN3SkFBa0FnRkNnQ0ZDSUJRUU5HRFFBZ0lVRURSdzBBSUJRb0FoZ2lBQ2dDQUNBQUtBSUVSdzBCSUFBb0FqUkJBVVlOQVNBVVFRTTJBaFFNQXdzZ0lVRUNTdzBBSUJSQkFqWUNGQXdEQ3dKQUFrQWdBVUVEYXc0REF3RUFCQXNqQUVFUWF5SUpKQUFDUUFKQUFrQWdGQ2dDRUVFRVNRMEFJQlFvQWhnaUFDZ0NBQ0lCSUFBb0FqUkhEUUFnQVNBQUtBSm9SdzBBSUFFZ0FDZ0NuQUZIRFFBZ0FDZ0NCQ0lCSUFBb0FqaEhEUUFnQVNBQUtBSnNSdzBBSUFFZ0FDZ0NvQUZHRFFFTElBbEJuUWcyQWdRZ0NVRzRDallDQUVHd3l3RkJ6ajhnQ1JBYURBRUxBa0FnQUNnQ0RDQUFLQUlJYkNJTlJRUkFJQUFvQXNnQklRRU1BUXREQUFDQVAwRi9JQUFvQXJRQmRFRi9jN09WSVVWREFBQ0FQMEYvSUFBb0FvQUJkRUYvYzdPVklVZERBQUNBUDBGL0lBQW9Ba3gwUVg5enM1VWhTRU1BQUlBL1FYOGdBQ2dDR0hSQmYzT3psU0ZHSUFBb0FzZ0JJUUVnQUNnQ2xBRWhBaUFBS0FKZ0lRb2dBQ2dDTENFSVFRQWhBQUpBSUExQkNFa05BQ0FJSUFvZ0RVRUNkQ0lMYWlJUFNTQUtJQWdnQzJvaUZrbHhEUUFnQWlBV1NTQUlJQUlnQzJvaURFbHhEUUFnQVNBV1NTQUlJQUVnQzJvaUMwbHhEUUFnQ2lBTVNTQUNJQTlKY1EwQUlBRWdEMGtnQ2lBTFNYRU5BQ0FCSUF4SklBSWdDMGx4RFFBZ0RVRjhjU0VBSUVYOUV5RTZJRWY5RXlFN0lFajlFeUZBSUViOUV5RTlRUUFoQ3dOQUlBSWdDMEVDZENJUGFpSVcvUUFDQUNFK0lBb2dEMm9pRFAwQUFnQWhQeUFJSUE5cUloRDlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdQU0FRL1FBQ0FQMzZBZjNtQWYzbEFmME1BQUIvUXdBQWYwTUFBSDlEQUFCL1EvM21BZjBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUE2SUFFZ0QycjlBQUlBL2ZvQi9lWUIvZVVCSWp6OTVnSDkrQUg5Q3dJQUlBejlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdRQ0EvL2ZvQi9lWUIvZVVCL1F3QUFIOURBQUIvUXdBQWYwTUFBSDlEL2VZQklEejk1Z0g5K0FIOUN3SUFJQmI5REFBQWdEOEFBSUEvQUFDQVB3QUFnRDhnT3lBKy9mb0IvZVlCL2VVQi9Rd0FBSDlEQUFCL1F3QUFmME1BQUg5RC9lWUJJRHo5NWdIOStBSDlDd0lBSUF0QkJHb2lDeUFBUncwQUN5QUFJQTFHRFFFTEEwQUNmME1BQUlBL0lFWWdDQ0FBUVFKMElndHFJZzhvQWdDeWxKTkRBQUIvUTVSREFBQ0FQeUJGSUFFZ0Myb29BZ0N5bEpNaVNaUWlTb3REQUFBQVQxMEVRQ0JLcUF3QkMwR0FnSUNBZUFzaEZpQUNJQXRxSWd3b0FnQWhFQ0FLSUF0cUlnc29BZ0FoRGlBUElCWTJBZ0FnQ3dKL1F3QUFnRDhnU0NBT3NwU1RRd0FBZjBPVUlFbVVJa3FMUXdBQUFFOWRCRUFnU3FnTUFRdEJnSUNBZ0hnTE5nSUFJQXdDZjBNQUFJQS9JRWNnRUxLVWswTUFBSDlEbENCSmxDSkppME1BQUFCUFhRUkFJRW1vREFFTFFZQ0FnSUI0Q3pZQ0FDQUFRUUZxSWdBZ0RVY05BQXNMSUFFUUZDQVVLQUlZSWdCQkNEWUNnQUVnQUVFSU5nSk1JQUJCQ0RZQ0dDQUFRUUEyQXNnQklCUkJBVFlDRkNBVUlCUW9BaEJCQVdzaUFEWUNFQ0FBUVFSSkRRQkJBeUVBQTBBZ0ZDZ0NHQ0FBUVRSc2FpSUJJQUVvQW1RMkFqQWdBU0FCL1FBQ1ZQMExBaUFnQVNBQi9RQUNSUDBMQWhBZ0FTQUIvUUFDTlAwTEFnQWdBRUVCYWlJQUlCUW9BaEJKRFFBTEN5QUpRUkJxSkFBTUF3c2pBRUVRYXlJSkpBQUNRQUpBQWtBZ0ZDZ0NFRUVEU1EwQUlCUW9BaGdpQUNnQ0FDSUJJQUFvQWpSSERRQWdBU0FBS0FKb1J3MEFJQUFvQWdRaUFTQUFLQUk0UncwQUlBRWdBQ2dDYkVZTkFRc2dDVUhiQ0RZQ0JDQUpRYmdLTmdJQVFiRExBVUg0UHlBSkVCb01BUXNDUUNBQUtBSU1JQUFvQWdoc0lnSkZEUUJCZnlBQUtBSVlJZ3AwUVg5eklRRkJBRUVCSUFwQkFXdDBJZ29nQUNnQ2lBRWJJUTlCQUNBS0lBQW9BbFFiSVJZZ0FDZ0NsQUVoQ2lBQUtBSmdJUWdnQUNnQ0xDRU5RUUFoQUFKQUlBSkJCRWtOQUNBTklBZ2dBa0VDZENJTGFpSU1TU0FJSUFzZ0RXb2lFRWx4RFFBZ0NpQVFTU0FOSUFvZ0Myb2lDMGx4RFFBZ0NDQUxTU0FLSUF4SmNRMEFJQUpCZkhFaEFDQUIvUkVoUENBUC9SRWhQU0FXL1JFaFBrRUFJUXNEUUNBTklBdEJBblFpREdvaUVDQThJQW9nREdvaUR2MEFBZ0FnUGYyeEFmMzZBU0k2L1F4cGRMTS9hWFN6UDJsMHN6OXBkTE0vL2VZQklBZ2dER29pRFAwQUFnQWdQdjJ4QWYzNkFTSTcvUXl6V1JxNHMxa2F1TE5aR3JpeldScTQvZVlCSUJEOUFBSUEvZm9CSWtEOTVBSDk1QUg5REFBQUFEOEFBQUEvQUFBQVB3QUFBRC85NUFIOStBRWlQLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDI0QVNBOElELzlPZjFTL1FzQ0FDQU1JRHdnT3YwTUdkQTJ2eG5RTnI4WjBEYS9HZEEydi8zbUFTQkEvUXpWQ1lBLzFRbUFQOVVKZ0QvVkNZQS8vZVlCSUR2OURDY3hzTDRuTWJDK0p6R3d2aWN4c0w3OTVnSDk1QUg5NUFIOURBQUFBRDhBQUFBL0FBQUFQd0FBQUQvOTVBSDkrQUVpUC8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAyNEFTQThJRC85T2YxUy9Rc0NBQ0FPSUR3Z092ME12VGNHdDcwM0JyZTlOd2EzdlRjR3QvM21BU0JBL1F4bTlIOC9adlIvUDJiMGZ6OW05SDgvL2VZQklEdjlERFhTNGo4MTB1SS9OZExpUHpYUzRqLzk1Z0g5NUFIOTVBSDlEQUFBQUQ4QUFBQS9BQUFBUHdBQUFELzk1QUg5K0FFaU92ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMjRBU0E4SURyOU9mMVMvUXNDQUNBTFFRUnFJZ3NnQUVjTkFBc2dBQ0FDUmcwQkN3TkFBbjhnQ2lBQVFRSjBJZ3RxSWd3b0FnQWdEMnV5SWtWRGFYU3pQNVFnQ0NBTGFpSVFLQUlBSUJacnNpSkhRN05aR3JpVUlBc2dEV29pRGlnQ0FMSWlTSktTUXdBQUFEK1NJa2FMUXdBQUFFOWRCRUFnUnFnTUFRdEJnSUNBZ0hnTElRc2dEaUFCSUF0QkFDQUxRUUJLR3lBQklBdElHellDQUNBUUlBRUNmeUJGUXhuUU5yK1VJRWhEMVFtQVA1UWdSME1uTWJDK2xKS1NRd0FBQUQrU0lrYUxRd0FBQUU5ZEJFQWdScWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBTUlBRUNmeUJGUTcwM0JyZVVJRWhEWnZSL1A1UWdSME0xMHVJL2xKS1NRd0FBQUQrU0lrV0xRd0FBQUU5ZEJFQWdSYWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBQVFRRnFJZ0FnQWtjTkFBc0xJQlJCQVRZQ0ZBc2dDVUVRYWlRQURBSUxJQ0VnQWlBQ0lDRkxHeUVoUVFFaEdRd0JDd0pBQWtBQ2Z3SkFBa0FnRkNnQ0dDSUJLQUlBUVFGSERRQUNRQUpBSUFFb0FqUkJBV3NPQWdFQUFnc2dBU2dDYUVFQ1J3MEJBa0FnQVNnQ0JFRUJSdzBBSUFFb0FqaEJBa2NOQUNBQktBSnNRUUpIRFFBZ0ZDSVdLQUlZSWdBb0FoZ2hBU0FBS0FLVUFTRU9JQUFvQW1BaENpQUFLQUlzSVJBZ0FDZ0NQQ0VmSUFBb0FnZ2lDU0FBS0FJTUlnSnNRUUowSWdBUUhDRUlJQUFRSENFTklBQVFIQ0VVQWtBQ1FBSkFBa0FDUUFKQUlBaEZEUUFnRFVVTkFDQVVSUTBBUVg4Z0FYUkJmM01oREVFQklBRkJBV3QwSVJFZ0FpQVdLQUlFUVFGeElnQnJJU1lnRmlnQ0FFRUJjU0VkSUFCRkRRTWdDVVVOQXdKL1FRQWdFV3V5dXlJRlJHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVJNQ2Z5QUZSQ2N4Q0t3Y1d2dy9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNoRlNBSlFRaEpBbjhnQlVRNzMwK05sMjcyUDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElSc05BU0FOSUFoclFSQkpEUUVnRkNBSWEwRVFTUTBCSUFnZ0VHdEJFRWtOQVNBVUlBMXJRUkJKRFFFZ0RTQVFhMEVRU1EwQklCUWdFR3RCRUVrTkFTQVVJQWxCZkhFaUQwRUNkQ0lDYWlFQUlBSWdDR29oQVNBVi9SRWhPeUFUL1JFaFFDQU0vUkVoUENBYi9SRWhQUU5BSUFnZ0YwRUNkQ0lMYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBTElCQnEvUUFDQUNJNklEMzlyZ0VpUGlBOC9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FMSUExcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb2dRUDJ4QVNJK0lEejl0Z0VnUHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUFzZ0ZHcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdPaUE3L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVdjBMQWdBZ0YwRUVhaUlYSUE5SERRQUxJQUlnRUdvaEVDQUNJQTFxSVFJZ0NTQVBSZzBFREFJTElBZ1FGQ0FORUJRZ0ZCQVVEQVFMSUFnaEFTQU5JUUlnRkNFQUN3TkFJQUVnRUNnQ0FDSUxJQnRxSWhjZ0RDQU1JQmRLRzBFQUlCZEJBRTRiTmdJQUlBSWdDeUFUYXlJWElBd2dEQ0FYU2h0QkFDQVhRUUJPR3pZQ0FDQUFJQXNnRldvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBRUVFYWlFQUlBSkJCR29oQWlBQlFRUnFJUUVnRUVFRWFpRVFJQTlCQVdvaUR5QUpSdzBBQ3d3QkN5QVVJUUFnRFNFQ0lBZ2hBUXNnQ1NBZGF5RWlBa0FnSmtGK2NTSW5CSDhDZjBFQUlCRnJzcnNpQlVScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVlSUNKQmZuRWlLRUVCYXdKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVnUVg1eEFuOGdCVVE3MzArTmwyNzJQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVNNZ0owRUJheUVwUVFKcUlRc2dDVUVDZENFYkEwQWdBQ0FiYWlFWElBSWdHMm9oRlNBQklCdHFJUThnRUNBYmFpRVRJQjBFUUNBQklCQW9BZ0FpQ1NBamFpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FDSUFrZ0htc2lFaUFNSUF3Z0Vrb2JRUUFnRWtFQVRoczJBZ0FnQUNBSklDQnFJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFvb0FnQWhHQ0FQQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFUS0FJQUlnbHFJaElnRENBTUlCSktHMEVBSUJKQkFFNGJOZ0lBSUJVZ0NRSi9JQmdnRVd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FYQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQWxxSWdrZ0RDQUpJQXhJRzBFQUlBbEJBRTRiTmdJQUlCZEJCR29oRnlBVlFRUnFJUlVnRDBFRWFpRVBJQk5CQkdvaEV5QUNRUVJxSVFJZ0VFRUVhaUVRSUFGQkJHb2hBU0FBUVFScUlRQUxRUUFoQ1NBb0JFQURRQ0FLS0FJQUlSd2dBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQUNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNBQ0FDSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQUNBS0tBSUFJUndnQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0JDSVNhaUlZSUF3Z0RDQVlTaHRCQUNBWVFRQk9HellDQkNBQ0lCSUNmeUFjSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lHQ0FNSUF3Z0dFb2JRUUFnR0VFQVRoczJBZ1FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFTYWlJU0lBd2dEQ0FTU2h0QkFDQVNRUUJPR3pZQ0JDQUtLQUlBSVJ3Z0R3Si9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0V5Z0NBQ0lTYWlJWUlBd2dEQ0FZU2h0QkFDQVlRUUJPR3pZQ0FDQVZJQklDZnlBY0lCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpR0NBTUlBd2dHRW9iUVFBZ0dFRUFUaHMyQWdBZ0Z3Si9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBU2FpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FLS0FJQUlSd2dEd0ovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFeWdDQkNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNCQ0FWSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnUWdGd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQkNBT1FRUnFJUTRnQ2tFRWFpRUtJQmRCQ0dvaEZ5QVZRUWhxSVJVZ0QwRUlhaUVQSUJOQkNHb2hFeUFBUVFocUlRQWdBa0VJYWlFQ0lBRkJDR29oQVNBUVFRaHFJUkFnQ1VFQ2FpSUpJQ2hKRFFBTElBc2hDUXNDUUNBSklDSlBEUUFnRUNnQ0FDRVNJQThDZnlBZklBbEJBWFlpR0VZRVFDQUJJQklnSTJvaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdBaUFTSUI1cklna2dEQ0FKSUF4SUcwRUFJQWxCQUU0Yk5nSUFJQUFnRWlBZ2FpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNBQ0FUS0FJQUlna2dIbXNpRHlBTUlBd2dEMG9iUVFBZ0QwRUFUaHNoRHlBSklDQnFJUk1nQ1NBamFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d3d0JDeUFLS0FJQUlROGdBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFbW9pQ1NBTUlBa2dERWdiUVFBZ0NVRUFUaHMyQWdBZ0FpQVNBbjhnRHlBUmE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFBQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRW1vaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdFeWdDQUNJSkFuOGdDaWdDQUNBUmE3SzdJZ1ZFYXJ4MGt4Z0UxaitpSUE0b0FnQWdFV3V5dXlJR1JBd0NLNGNXMmVZL29xQWlCNWxFQUFBQUFBQUE0RUZqQkVBZ0I2b01BUXRCZ0lDQWdIZ0xheUlQSUF4SUlSTWdEeUFNSUJNYklSTWdEMEVBU0NFU0FuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFscUlnOGdEQ0FNSUE5S0d5RWNJQTlCQUVnaEpFRUFJQk1nRWhzaER3Si9JQVZFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpRVRRUUFnSENBa0d3czJBZ0FnRlNBUE5nSUFJQmNnRXlBTUlBd2dFMG9iUVFBZ0UwRUFUaHMyQWdBZ0FFRUVhaUVBSUFKQkJHb2hBaUFCUVFScUlRRWdFRUVFYWlFUUlCZ2dIMDhOQUNBT1FRUnFJUTRnQ2tFRWFpRUtDeUFBSUJ0cUlRQWdBaUFiYWlFQ0lBRWdHMm9oQVNBUUlCdHFJUkFnSlVFQ2FpSWxJQ2RKRFFBTElDbEJmbkZCQW1vRlFRQUxJQ1pQRFFBZ0hRUkFJQUVDZjBFQUlCRnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQ1dvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBaUFKQW44Z0JVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0QzJzaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBQUovSUFWRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlKSUF3Z0NTQU1TQnRCQUNBSlFRQk9HellDQUNBQ1FRUnFJUUlnRUVFRWFpRVFJQUZCQkdvaEFTQUFRUVJxSVFBTElDSWdJa0YrY1NJYkJIOGdHMEVCYXlJSlFYNXhBa0FDZjBFQUlCdEJEMGtOQUJwQkFDQUJJQUlnQ1VFQmRpSVZRUU4wUVFocUloTnFJZ2xKSUFJZ0FTQVRhaUlMU1hFTkFCcEJBQ0FBSUF0SklBRWdBQ0FUYWlJUFNYRU5BQnBCQUNBQklCQWdFMm9pRTBrZ0N5QVFTM0VOQUJwQkFDQUtJQXRKSUFFZ0NpQVZRUUowUVFScUloSnFJaGRKY1EwQUdrRUFJQXNnRGtzZ0FTQU9JQkpxSWd0SmNRMEFHa0VBSUFJZ0Qwa2dBQ0FKU1hFTkFCcEJBQ0FDSUJOSklBa2dFRXR4RFFBYVFRQWdBaUFYU1NBSklBcExjUTBBR2tFQUlBSWdDMGtnQ1NBT1MzRU5BQnBCQUNBQUlCTkpJQThnRUV0eERRQWFRUUFnQUNBWFNTQUtJQTlKY1EwQUdrRUFJQUFnQzBrZ0RpQVBTWEVOQUJvZ0NpQVZRUUZxSWlWQi9QLy8vd2R4SWhkQkFuUWlKbW9oQ1NBQUlCZEJBM1FpRW1vaEN5QUJJQkpxSVE4Z0RQMFJJVHdnRWYwUklVQkJBQ0VWQTBBZ0VDQVZRUU4wSWhOQkdISWlIV29pSnlBUUlCTkJFSElpSG1vaUtDQVFJQk5CQ0hJaUlHb2lHQ0FRSUJOcUlpbjlYQUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJVG9DZnlBT0lCVkJBblFpSEdyOUFBSUFJRUQ5c1FIOStnRWlPLzFmSWozOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEpDQUtJQnhxL1FBQ0FDRS9JQUVnRTJvaUhQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnUHYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FrL1J3QkFuOGdPeUE3L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVB2ME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWtIOXJnRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FCSUNCcUlpUWdPLzFhQWdBQklBRWdIbW9pTENBNy9Wb0NBQUlnQVNBZGFpSXRJRHY5V2dJQUF3Si9JRDhnUVAyeEFmMzZBU0k3L1Y4aVAvME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0E5L1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajM5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElTb2dBaUFUYWlJdS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb0NmeUE5L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQ3I5SEFFQ2Z5QTcvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUGYwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQSsvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdPLzBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlQdjJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlPLzFhQWdBQUlBSWdJR29pS2lBNy9Wb0NBQUVnQWlBZWFpSXZJRHY5V2dJQUFpQUNJQjFxSWpBZ08vMWFBZ0FEQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXJJQUFnRTJvaUUvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FyL1J3QkFuOGdQZjBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJNi9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lEcjlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElqMzlyZ0VpT2lBOC9iWUJJRHI5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqcjlXZ0lBQUNBQUlDQnFJaUFnT3YxYUFnQUJJQUFnSG1vaUhpQTYvVm9DQUFJZ0FDQWRhaUlkSURyOVdnSUFBeUFjL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNkQkJHb2dLRUVFYWlBWVFRUnFJQ245WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESWpzZ1FmMnVBU0k2SUR6OXRnRWdPdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaU92MWFBZ1FBSUNRZ092MWFBZ1FCSUN3Z092MWFBZ1FDSUMwZ092MWFBZ1FESUM3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ095QSsvYkVCSWpvZ1BQMjJBU0E2L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTYvVm9DQkFBZ0tpQTYvVm9DQkFFZ0x5QTYvVm9DQkFJZ01DQTYvVm9DQkFNZ0UvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTdJRDM5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQWdJRHI5V2dJRUFTQWVJRHI5V2dJRUFpQWRJRHI5V2dJRUF5QVZRUVJxSWhVZ0YwY05BQXNnRGlBbWFpRU9JQkFnRW1vaEVDQUNJQkpxSVFJZ0Z5QWxSZ1JBSUE4aEFTQUxJUUFnQ1NFS0RBSUxJQThoQVNBTElRQWdDU0VLSUJkQkFYUUxJUThEUUNBS0tBSUFJUk1nQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0FDSUphaUlMSUF3Z0N5QU1TQnRCQUNBTFFRQk9HellDQUNBQ0lBa0NmeUFUSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lDeUFNSUFzZ0RFZ2JRUUFnQzBFQVRoczJBZ0FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFKYWlJSklBd2dDU0FNU0J0QkFDQUpRUUJPR3pZQ0FDQUtLQUlBSVJNZ0FRSi9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NCQ0lKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3pZQ0JDQUNJQWtDZnlBVElCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpQ3lBTUlBc2dERWdiUVFBZ0MwRUFUaHMyQWdRZ0FBSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNCQ0FPUVFScUlRNGdDa0VFYWlFS0lBQkJDR29oQUNBQ1FRaHFJUUlnQVVFSWFpRUJJQkJCQ0dvaEVDQVBRUUpxSWc4Z0cwa05BQXNMUVFKcUJVRUFDeUlMVFEwQUlCQW9BZ0FoQ1FKOElCOGdDMEVCZGtZRVFBSi9RUUFnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnQ1dvaUNpQU1JQW9nREVnYlFRQWdDa0VBVGhzaERpQUZEQUVMQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3lFT0lBb29BZ0FnRVd1eXV3c2hCaUFCSUE0MkFnQWdBaUFKQW44Z0JrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUFTQU1JQUVnREVnYlFRQWdBVUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlBSUF3Z0FDQU1TQnRCQUNBQVFRQk9HellDQUFzZ0ZpZ0NHQ2dDTEJBVUlCWW9BaGdpQUNBSU5nSXNJQUFvQW1BUUZDQVdLQUlZSWdBZ0RUWUNZQ0FBS0FLVUFSQVVJQllvQWhnaUFDQVVOZ0tVQVNBQUlBRDlBQUlBSWp6OUN3Sm9JQUFnUFAwTEFqUWdGa0VCTmdJVUN3d0hDeUFCS0FJRVFRRkhEUUVnQVNnQ09FRUJSdzBCSUFFb0FteEJBVWNOQVNBQktBSVlJUUFnQVNnQ2xBRWhBaUFCS0FKZ0lRc2dBU2dDTENFT0lBRW9BandoSUNBQktBSUlJZ29nQVNnQ0RDSWpiRUVDZENJQkVCd2hEeUFCRUJ3aEZpQUJFQndoRENBUFJRMEZJQlpGRFFVZ0RFVU5CU0FqQkVBZ0NpQVVLQUlBUVFGeElpeHJJU1VDZjBFQVFRRWdBRUVCYTNRaUUydXl1eUlGUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJU1pCZnlBQWRDQWxRWDV4SWlKQkFXc2lDa0VCZGlJQVFRRnFJU2NDZnlBRlJDY3hDS3djV3Z3L29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2hLQ0FLUVg1eElRb2dBRUVDZENFSUlBQkJBM1FoQUNBblFYeHhJUmRCZjNNaEVRSi9JQVZFTzk5UGpaZHU5aitpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFWUlBcEJBbW9oS1NBSVFRUnFJUndnQUVFSWFpRWJJQmRCQW5RaEpDQVhRUU4wSVJJZ0YwRUJkQ0VRSUJIOUVTRThJQlA5RVNGQUlDSkJCMGtoTFNBUElRb2dGaUVBSUF3aENBTkFJQ3dFUUNBS0lBNG9BZ0FpQVNBWWFpSU5JQkVnRFNBUlNCdEJBQ0FOUVFCT0d6WUNBQ0FBSUFFZ0ptc2lEU0FSSUEwZ0VVZ2JRUUFnRFVFQVRoczJBZ0FnQ0NBQklDaHFJZ0VnRVNBQklCRklHMEVBSUFGQkFFNGJOZ0lBSUFoQkJHb2hDQ0FLUVFScUlRb2dEa0VFYWlFT0lBQkJCR29oQUFzQ2Z3Si9JQ0pGQkVBZ0N5RUpJQWdoQVNBS0lRMUJBQXdCQzBFQUlSa0NRQUpBSUMwTkFDQUtJQUFnRzJvaUFVa2dBQ0FLSUJ0cUlnMUpjUTBBSUFnZ0RVa2dDaUFJSUJ0cUlnbEpjUTBBSUFvZ0RpQWJhaUlWU1NBTklBNUxjUTBBSUFzZ0RVa2dDaUFMSUJ4cUloOUpjUTBBSUFJZ0RVa2dDaUFDSUJ4cUlnMUpjUTBBSUFBZ0NVa2dBU0FJUzNFTkFDQUFJQlZKSUFFZ0RrdHhEUUFnQUNBZlNTQUJJQXRMY1EwQUlBQWdEVWtnQVNBQ1MzRU5BQ0FJSUJWSklBa2dEa3R4RFFBZ0NDQWZTU0FKSUF0TGNRMEFJQUlnQ1VrZ0NDQU5TWEVOQUNBTElDUnFJUWtnQ0NBU2FpRUJJQW9nRW1vaERRTkFJQTRnR1VFRGRDSVZRUmh5SWg5cUlpb2dEaUFWUVJCeUloMXFJaTRnRGlBVlFRaHlJaDVxSWk4Z0RpQVZhaUl3L1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlFNkFuOGdBaUFaUVFKMElpdHEvUUFDQUNCQS9iRUIvZm9CSWp2OVh5STkvUXc3MzArTmwyNzJQenZmVDQyWGJ2WS8vZklCSWo3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJVEVnQ3lBcmF2MEFBZ0FoUHlBS0lCVnFJaXY5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lENzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ01mMGNBUUovSURzZ08vME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMWZJajc5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaU8vMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QTcvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0F5SkIvYTRCSWpzZ1BQMjJBU0E3L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTcvVm9DQUFBZ0NpQWVhaUl4SUR2OVdnSUFBU0FLSUIxcUlqTWdPLzFhQWdBQ0lBb2dIMm9pTkNBNy9Wb0NBQU1DZnlBL0lFRDlzUUg5K2dFaU8vMWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUV5SUFBZ0ZXb2lOZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E2QW44Z1BmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBeS9Sd0JBbjhnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8xZklqMzlER3E4ZEpNWUJOWS9hcngwa3hnRTFqLzk4Z0VnUHYwTURBSXJoeGJaNWo4TUFpdUhGdG5tUC8zeUFmM3dBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWo3OXNRRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FBSUI1cUlqSWdPLzFhQWdBQklBQWdIV29pTmlBNy9Wb0NBQUlnQUNBZmFpSTNJRHY5V2dJQUF3Si9JRC85RENjeENLd2NXdncvSnpFSXJCeGEvRC85OGdFaU8vMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoT0NBSUlCVnFJaFg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lEdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ09QMGNBUUovSUQzOURDY3hDS3djV3Z3L0p6RUlyQnhhL0QvOThnRWlPdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE2L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBeUk5L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUk2L1ZvQ0FBQWdDQ0FlYWlJZUlEcjlXZ0lBQVNBSUlCMXFJaDBnT3YxYUFnQUNJQWdnSDJvaUh5QTYvVm9DQUFNZ0svME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQXFRUVJxSUM1QkJHb2dMMEVFYWlBdy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5STdJRUg5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQXhJRHI5V2dJRUFTQXpJRHI5V2dJRUFpQTBJRHI5V2dJRUF5QTEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRHNnUHYyeEFTSTZJRHo5dGdFZ092ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpT3YxYUFnUUFJRElnT3YxYUFnUUJJRFlnT3YxYUFnUUNJRGNnT3YxYUFnUURJQlg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT3lBOS9hNEJJam9nUFAyMkFTQTYvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VWlJNi9Wb0NCQUFnSGlBNi9Wb0NCQUVnSFNBNi9Wb0NCQUlnSHlBNi9Wb0NCQU1nR1VFRWFpSVpJQmRIRFFBTElBSWdKR29oQWlBT0lCSnFJUTRnQUNBU2FpRUFJQkFoR1NBcElCY2dKMFlOQWhvTUFRc2dDaUVOSUFnaEFTQUxJUWtMQTBBZ0NTZ0NBQ0VMSUEwQ2Z5QUNLQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUE0b0FnQWlDbW9pQ0NBUklBZ2dFVWdiUVFBZ0NFRUFUaHMyQWdBZ0FDQUtBbjhnQ3lBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVNBSUlCRklHMEVBSUFoQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnQ21vaUNpQVJJQW9nRVVnYlFRQWdDa0VBVGhzMkFnQWdDU2dDQUNFTElBMENmeUFDS0FJQUlCTnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElBNG9BZ1FpQ21vaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzMkFnUWdBQ0FLQW44Z0N5QVRhN0s3SWdaRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXRySWdnZ0VTQUlJQkZJRzBFQUlBaEJBRTRiTmdJRUlBRUNmeUFHUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzZ0Ntb2lDaUFSSUFvZ0VVZ2JRUUFnQ2tFQVRoczJBZ1FnQWtFRWFpRUNJQWxCQkdvaENTQUJRUWhxSVFFZ0FFRUlhaUVBSUExQkNHb2hEU0FPUVFocUlRNGdHVUVDYWlJWklDSkpEUUFMSUNrTElnZ2dKVThFUUNBQklRZ2dEU0VLSUFrTUFRc2dEaWdDQUNFS0FuOGdJQ0FJUVFGMklobEdCRUFnQ2lBbWF5SUlJQkVnQ0NBUlNCdEJBQ0FJUVFCT0d5RUxJQW9nR0dvaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzaENDQW9EQUVMSUFvQ2Z5QUpLQUlBSUJOcnNyc2lCVVJxdkhTVEdBVFdQNklnQWlnQ0FDQVRhN0s3SWdaRURBSXJoeGJaNWoraW9DSUhtVVFBQUFBQUFBRGdRV01FUUNBSHFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVVnaEN5QUlJQkVnQ3h0QkFDQUlRUUJPR3lFTEFuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFwcUlnZ2dFU0FJSUJGSUcwRUFJQWhCQUU0YklRZ0NmeUFGUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzTElSVWdEU0FJTmdJQUlBQWdDellDQUNBQklBb2dGV29pQ2lBUklBb2dFVWdiUVFBZ0NrRUFUaHMyQWdBZ0FVRUVhaUVJSUFCQkJHb2hBQ0FOUVFScUlRb2dEa0VFYWlFT0lBa2dHU0FnVHcwQUdpQUNRUVJxSVFJZ0NVRUVhZ3NoQ3lBNVFRRnFJamtnSTBjTkFBc0xJQlFvQWhnb0Fpd1FGQ0FVS0FJWUlnQWdEellDTENBQUtBSmdFQlFnRkNnQ0dDSUFJQlkyQW1BZ0FDZ0NsQUVRRkNBVUtBSVlJZ0FnRERZQ2xBRWdBQ0FBL1FBQ0FDSTgvUXNDYUNBQUlEejlDd0kwSUJSQkFUWUNGRUVBSVJrTUJnc2dBU2dDYUVFQlJ3MEFJQUVvQWdSQkFVY05BQ0FCS0FJNFFRRkhEUUFnQVNnQ2JFRUJSdzBBSUFFb0FoZ2hBaUFCS0FLVUFTRUpJQUVvQW1BaERpQUJLQUlzSVFBZ0FTZ0NEQ0FCS0FJSWJDSU1RUUowSWdFUUhDRUlJQUVRSENFUElBRVFIQ0VMQWtBZ0NFVU5BQ0FQUlEwQUlBdEZEUUFnREVVTkJFRi9JQUowUVg5eklSbEJBU0FDUVFGcmRDRVRJQXhCQ0VrTkFpQVBJQWhyUVJCSkRRSWdDeUFJYTBFUVNRMENJQWdnQUd0QkVFa05BaUFJSUE1clFSQkpEUUlnQ0NBSmEwRVFTUTBDSUFzZ0QydEJFRWtOQWlBUElBQnJRUkJKRFFJZ0R5QU9hMEVRU1EwQ0lBOGdDV3RCRUVrTkFpQUxJQUJyUVJCSkRRSWdDeUFPYTBFUVNRMENJQXNnQ1d0QkVFa05BaUFKSUF4QmZIRWlDa0VDZENJUWFpRU5JQXNnRUdvaEFTQUlJQkJxSVFJZ0dmMFJJVHdnRS8wUklUb0RRQUovSUFrZ0ZrRUNkQ0lSYXYwQUFnQWdPdjJ4QWYzNkFTSTcvVjhpUGYwTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFVklBNGdFV3I5QUFJQUlUOGdDQ0FSYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUlCRnEvUUFDQUNKQUFuOGdQdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUVTQVYvUndCQW44Z095QTcvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpTy8wTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0FnSi9JRDc5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0QvYTRCSWo0Z1BQMjJBU0ErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVV2MExBZ0FDZnlBL0lEcjlzUUg5K2dFaVB2MWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUVWSUE4Z0VXcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdRQUovSUQzOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUkVnRmYwY0FRSi9JRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlJOS9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRHY5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlPLzBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBLzJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RVZJQXNnRVdyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBSi9JRHY5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdGZjBjQVFKL0lEMzlEQ2N4Q0t3Y1d2dy9KekVJckJ4YS9ELzk4Z0VpTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQUlDZnlBNy9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQS8ydUFTSTdJRHo5dGdFZ08vME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVkw5Q3dJQUlCWkJCR29pRmlBS1J3MEFDeUFLSUF4R0RRUWdEaUFRYWlFT0lBQWdFR29oQUNBUElCQnFEQU1MSUFnUUZDQVBFQlFnQ3hBVURBVUxJQnBCendNMkFnUWdHa0c0Q2pZQ0FFR3d5d0ZCbzhBQUlCb1FHZ3dFQ3lBSUlRSWdDeUVCSUFraERTQVBDeUVKQTBBZ0RpZ0NBQ0VSSUFJQ2Z5QU5LQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFBb0FnQWlGbW9pRUNBWklCQWdHVWdiUVFBZ0VFRUFUaHMyQWdBZ0NTQVdBbjhnRVNBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaEFnR1NBUUlCbElHMEVBSUJCQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRm1vaUZpQVpJQllnR1VnYlFRQWdGa0VBVGhzMkFnQWdBVUVFYWlFQklBbEJCR29oQ1NBQ1FRUnFJUUlnRFVFRWFpRU5JQTVCQkdvaERpQUFRUVJxSVFBZ0NrRUJhaUlLSUF4SERRQUxDeUFVS0FJWUtBSXNFQlFnRkNnQ0dDSUFJQWcyQWl3Z0FDZ0NZQkFVSUJRb0FoZ2lBQ0FQTmdKZ0lBQW9BcFFCRUJRZ0ZDZ0NHQ0FMTmdLVUFTQVVRUUUyQWhSQkFDRVpEQUVMSUE4UUZDQVdFQlFnREJBVUN5QWFLQUlnSVFBQ1FDQUREUUFnSVVVTkFDQUFLQUlZSVJSQkFDRVdBMEFnRkNBV1FUUnNhaUlES0FJWUlnSkJDRWNFUUFKQUlBSkJCMDBFUUNBREtBSU1JQU1vQWdoc0lRRWdBeWdDTENFSUlBTW9BaUFFUUNBQlJRMENRUUVnQWtFQmEzU3RJVUpCQUNFS0lBRkJCRThFUUNBQlFYeHhJUW9nUXYwU0lUeEJBQ0VPQTBBZ0NDQU9RUUowYWlJQ0lBTDlBQUlBSWpyOXh3RkJCLzNMQVNJNy9SMEFJRHo5SFFBaVEzLzlFaUE3L1IwQklEejlIUUVpUkgvOUhnRWdPaUE4L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpT3YwZEFDQkRmLzBTSURyOUhRRWdSSC85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQTVCQkdvaURpQUtSdzBBQ3lBQklBcEdEUU1MQTBBZ0NDQUtRUUowYWlJQ0lBSTBBZ0JDQjRZZ1FuOCtBZ0FnQ2tFQmFpSUtJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUNkRUYvYzYwaFFrRUFJUW9nQVVFRVR3UkFJQUZCZkhFaENpQkMvUkloUEVFQUlRNERRQ0FJSUE1QkFuUnFJZ0lnQXYwQUFnQWlPdjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSTcvUjBBSUR6OUhRQWlRNEQ5RWlBNy9SMEJJRHo5SFFFaVJJRDlIZ0VnT2lBOC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWpyOUhRQWdRNEQ5RWlBNi9SMEJJRVNBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FPUVFScUlnNGdDa2NOQUFzZ0FTQUtSZzBDQ3dOQUlBZ2dDa0VDZEdvaUFpQUNOUUlBUXY4QmZpQkNnRDRDQUNBS1FRRnFJZ29nQVVjTkFBc01BUXNnQWtFSWF5RUlJQU1vQWd3Z0F5Z0NDR3doQVNBREtBSXNJUTBnQXlnQ0lBUkFJQUZGRFFGQkFDRUtJQUZCQkU4RVFDQUJRWHh4SVFwQkFDRUNBMEFnRFNBQ1FRSjBhaUlKSUFuOUFBSUFJQWo5ckFIOUN3SUFJQUpCQkdvaUFpQUtSdzBBQ3lBQklBcEdEUUlMQTBBZ0RTQUtRUUowYWlJQ0lBSW9BZ0FnQ0hVMkFnQWdDa0VCYWlJS0lBRkhEUUFMREFFTElBRkZEUUJCQUNFS0lBRkJCRThFUUNBQlFYeHhJUXBCQUNFQ0EwQWdEU0FDUVFKMGFpSUpJQW45QUFJQUlBajlyUUg5Q3dJQUlBSkJCR29pQWlBS1J3MEFDeUFCSUFwR0RRRUxBMEFnRFNBS1FRSjBhaUlDSUFJb0FnQWdDSFkyQWdBZ0NrRUJhaUlLSUFGSERRQUxDeUFEUVFnMkFoZ0xJQlpCQVdvaUZpQWhSdzBBQ3dzZ0FDZ0NEQ0FBS0FJSWJDRUJBa0FnR1VVRVFDQUFLQUlVUVFKR0JFQWdBQ2dDRUVFQlJnUkFJQUFvQWhnb0Fpd2dBUkFTREFNTElBUkZEUUlnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBUkFJREFJTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUVRQnd3QkN3SkFBa0FDUUNBaFFRRnJEZ1FBQXdFQ0F3c2dBQ2dDR0NnQ0xDQUJFQVlNQWdzZ0FDZ0NHQ0lBS0FJc0lBQW9BbUFnQUNnQ2xBRWdBUkFGREFFTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUFvQXNnQklBRVFCQXNnR2lnQ0lCQWxRUUFoRGdzZ0drSGd3QUJxSkFBZ0Rnc0lBRUVJSUFBUUtRdXJBZ0lDZmdKL1FuOGhBeUFBTFFCRVFRaHhSUVJBSUFBZ0FDZ0NJQ0lHTmdJa0FrQUNRQUpBSUFBZ0FDZ0NNQ0lGQkg4RFFDQUdJQVVnQUNnQ0FDQUFLQUlVRVFBQUlnVkJmMFlOQWlBQUlBQW9BaVFnQldvaUJqWUNKQ0FBSUFBb0FqQWdCV3NpQlRZQ01DQUZEUUFMSUFBb0FpQUZJQVlMTmdJa0lBRkNBRlVOQVVJQUlRTU1BZ3NnQUNBQUtBSkVRUWh5TmdKRUlBSkJCRUhQK1FCQkFCQVRJQUJCQURZQ01DQUFJQUFvQWtSQkNISTJBa1JDZnc4TFFnQWhBd05BSUFFZ0FDZ0NBQ0FBS0FJWUVRMEFJZ1JDZjFFRVFDQUNRUVJCd1BrQVFRQVFFeUFBSUFBb0FrUkJDSEkyQWtRZ0FDQUFLUU00SUFOOE53TTRRbjhnQXlBRFVCc1BDeUFESUFSOElRTWdBU0FFZlNJQlFnQlZEUUFMQ3lBQUlBQXBBemdnQTN3M0F6Z0xJQU1MSXdFQmZ5QUJJQUVvQWdBZ0FTZ0NDQ0lCSUFDbklnSWdBU0FDU1J0cU5nSUVRUUVMUEFJQ2Z3RitJQUVvQWdBZ0FTZ0NDR29pQXlBQktBSUVJZ0pHQkVCQ2Z3OExJQUVnQWlBQXAybzJBZ1FnQUNBRElBSnJyQ0lFSUFBZ0JGTWJDNXNCQVFWL1FRRWdBaWdDQ0NJSElBZEJBVTBiSVFRZ0FpZ0NCQ0lESUFJb0FnQnJJUVlEUUNBRUlnVkJBWFFoQkNBRklBWnJJQUZKRFFBTElBVWdCMGNFUUNBRkVCZ2lBMFVFUUVGL0R3c2dBaWdDQUNJRUJFQWdBeUFFSUFZUUZob2dBaWdDQUJBVUN5QUNJQVUyQWdnZ0FpQUROZ0lBSUFJZ0F5QUdhaUlETmdJRUN5QURJQUFnQVJBV0dpQUNJQUlvQWdRZ0FXbzJBZ1FnQVF1T0F3SUNmZ0ovSUFBb0FqQWlCU0FCcHlJR1R3UkFJQUFnQlNBR2F6WUNNQ0FBSUFBb0FpUWdCbW8yQWlRZ0FDQUFLUU00SUFGOE53TTRJQUVQQ3lBQUxRQkVRUVJ4QkVBZ0FFRUFOZ0l3SUFBZ0FDZ0NKQ0FGYWpZQ0pDQUFJQVd0SWdFZ0FDa0RPSHczQXpnZ0FVSi9JQVViRHdzQ1FDQUZSUVJBREFFTElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUZyU0lEZlNFQkN5QUJRZ0JWQkVBRFFDQUFLUU1JSUFBcEF6Z2dBU0FEZkh4VUJFQWdBa0VFUWVuNUFFRUFFQk1nQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dBM3dpQXpjRE9DQUFLUU1JSWdFZ0EzMGhCQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFVRVFDQUFJQUUzQXpnTElBQWdCVUVFY2pZQ1JFSi9JQVFnQVNBRFVSc1BDeUFCSUFBb0FnQWdBQ2dDR0JFTkFDSUVRbjlSQkVBZ0FrRUVRZW41QUVFQUVCTWdBQ0FBS0FKRVFRUnlOZ0pFSUFBZ0FDa0RPQ0FEZkRjRE9FSi9JQU1nQTFBYkR3c2dBeUFFZkNFRElBRWdCSDBpQVVJQVZRMEFDd3NnQUNBQUtRTTRJQU44TndNNElBTUxSZ0VDZnlBQ0tBSUFJQUlvQWdocUlnUWdBaWdDQkNJRFJnUkFRWDhQQ3lBQUlBTWdCQ0FEYXlJQUlBRWdBQ0FCU1JzaUFCQVdHaUFDSUFJb0FnUWdBR28yQWdRZ0FBdXFBZ0VFZnlNQVFSQnJJZ1FrQUFKQUlBQW9BblFOQUNBQ1FRRk5CRUFnQTBFQlFZM0ZBRUVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FFS0FJTUlnWkIvLzhEY1NJSFJRUkFJQU5CQVVHdXhRQkJBQkFUREFFTElBZEJCbXhCQW1vZ0Frc0VRQ0FEUVFGQmpjVUFRUUFRRXd3QkN5QUdRUVpzRUJnaUEwVU5BQ0FBUVFnUUdDSUNOZ0owSUFKRkJFQWdBeEFVREFFTElBSWdBellDQUNBQ0lBUXZBUXdpQWpzQkJDQUNSUVJBUVFFaEJRd0JDMEVBSVFJRFFDQUJRUUpxSUFSQkRHb2lCVUVDRUJVZ0F5QUNRUVpzYWlJR0lBUW9BZ3c3QVFBZ0FVRUVhaUFGUVFJUUZTQUdJQVFvQWd3N0FRSWdBVUVHYWlJQklBVkJBaEFWSUFZZ0JDZ0NERHNCQkVFQklRVWdBa0VCYWlJQ0lBQW9BblF2QVFSSkRRQUxDeUFFUVJCcUpBQWdCUXZzQVFFRWZ5TUFRUkJySWdVa0FBSi9JQUFvQW5naUJFVUVRQ0FEUVFGQjM4UUFRUUFRRTBFQURBRUxJQVFvQWd3RVFDQURRUUZCcWRvQVFRQVFFMEVBREFFTElBSWdCQzBBRWlJQ1FRSjBJZ1JKQkVBZ0EwRUJRYjdFQUVFQUVCTkJBQXdCQzBFQUlBUVFHQ0lFUlEwQUdpQUNCRUJCQUNFREEwQWdBU0FGUVF4cUlnWkJBaEFWSUFRZ0EwRUNkR29pQnlBRktBSU1Pd0VBSUFGQkFtb2dCa0VCRUJVZ0J5QUZLQUlNT2dBQ0lBRkJBMm9nQmtFQkVCVWdCeUFGS0FJTU9nQURJQUZCQkdvaEFTQURRUUZxSWdNZ0FrY05BQXNMSUFBb0FuZ2dCRFlDREVFQkN5QUZRUkJxSkFBTDhBTUJDWDhqQUVFUWF5SUZKQUFDUUNBQ1FRTkpEUUFnQUNnQ2VBMEFJQUVnQlVFTWFrRUNFQlVnQlM4QkRDSUpRWUVJYTBIL2QwMEVRQ0FGSUFrMkFnQWdBMEVCUWFFYklBVVFFd3dCQ3lBQlFRSnFJQVZCREdwQkFSQVZJQVV2QVF3aUNFVUVRQ0FEUVFGQndSaEJBQkFUREFFTElBSWdDRUVEYWtrTkFDQUlJQWxzUVFKMEVCZ2lCMFVOQUNBSUVCZ2lDa1VFUUNBSEVCUU1BUXNnQ0JBWUlndEZCRUFnQnhBVUlBb1FGQXdCQzBFVUVCZ2lCa1VFUUNBSEVCUWdDaEFVSUFzUUZBd0JDeUFCUVFOcUlRTWdCaUFLTmdJSUlBWWdDellDQkNBR0lBazdBUkFnQmlBSE5nSUFJQVVvQWd3aERDQUdRUUEyQWd3Z0JpQU1PZ0FTSUFBZ0JqWUNlQU5BSUFNZ0JVRU1ha0VCRUJVZ0JDQUthaUFGTFFBTVFmOEFjVUVCYWpvQUFDQUVJQXRxSUFVb0FneEJnQUZ4UVFkMk9nQUFJQU5CQVdvaEF5QUVRUUZxSWdRZ0NFY05BQXNnQ1VVRVFFRUJJUVFNQVF0QkFDRUdBMEJCQUNFRVFRQWhBQU5BUVFRZ0JDQUthaTBBQUVFSGFrRURkaUlFSUFSQkJFOGJJZ1FnQXlBQmEyb2dBa29FUUVFQUlRUU1Bd3NnQXlBRlFReHFJQVFRRlNBSElBVW9BZ3cyQWdBZ0IwRUVhaUVISUFNZ0JHb2hBeUFBUVFGcUlnQkIvLzhEY1NJRUlBaEpEUUFMUVFFaEJDQUdRUUZxSWdaQi8vOERjU0FKU1EwQUN3c2dCVUVRYWlRQUlBUUxtQUVCQW44akFFRVFheUlGSkFBZ0FDZ0NHQ0lFUWY4QlJ3UkFJQVVnQkRZQ0FDQURRUUpCMFJRZ0JSQVRDd0pBQWtBZ0FDZ0NGQ0FDUmdSQUlBSU5BVUVCSVFRTUFndEJBQ0VFSUFOQkFVR0o4UUJCQUJBVERBRUxRUUFoQWdOQVFRRWhCQ0FCSUFBb0FrZ2dBa0VNYkdwQkNHcEJBUkFWSUFGQkFXb2hBU0FDUVFGcUlnSWdBQ2dDRkVrTkFBc0xJQVZCRUdva0FDQUVDNDRHQVFaL0l3QkIwQUJySWdRa0FBSkFJQUpCQWswRVFDQURRUUZCNmZBQVFRQVFFd3dCQ3lBQUxRQjhCRUFnQTBFRVFaVFhBRUVBRUJOQkFTRUdEQUVMUVFFaEJpQUJJQUJCS0dwQkFSQVZJQUZCQVdvZ0FFRTBha0VCRUJVZ0FVRUNhaUFBUVN4cVFRRVFGU0FCUVFOcUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWlnaUIwRUJhdzRDQUFFQ0N5QUNRUVpOQkVBZ0JDQUNOZ0lRSUFOQkFVR085Z0FnQkVFUWFoQVRRUUFoQmd3RkN3SkFJQUpCQjBZTkFDQUFLQUl3UVE1R0RRQWdCQ0FDTmdJd0lBTkJBa0dPOWdBZ0JFRXdhaEFUQ3lBRklBQkJNR3BCQkJBVklBQW9BakJCRGtjTkEwRWtFQmdpQlVVRVFFRUFJUVlnQTBFQlFaUStRUUFRRXd3RkN5QUZRUTQyQWdBZ0JFRUFOZ0pBSUFSQkFEWUNPQ0FFUVFBMkFrZ2dCRUVBTmdJOElBUkJBRFlDUkNBRVFRQTJBa3hCc09xUUFpRUdJQVJCc09xUUFqWUNOQ0FGUVlDTWxhSUVOZ0lFQW44Z0FrRUhSd1JBSUFKQkkwWUVRQ0FCUVFkcUlBUkJ6QUJxUVFRUUZTQUJRUXRxSUFSQnlBQnFRUVFRRlNBQlFROXFJQVJCeEFCcVFRUVFGU0FCUVJOcUlBUkJRR3RCQkJBVklBRkJGMm9nQkVFOGFrRUVFQlVnQVVFYmFpQUVRVGhxUVFRUUZTQUJRUjlxSUFSQk5HcEJCQkFWSUFWQkFEWUNCQ0FFS0FJMElRWWdCQ2dDT0NFQ0lBUW9Ba0FoQXlBRUtBSThJUWNnQkNnQ1JDRUlJQVFvQWt3aENTQUVLQUpJREFJTElBUWdBallDSUNBRFFRSkJzdllBSUFSQklHb1FFd3RCQUNFQ1FRQWhBMEVBSVFkQkFBc2hBU0FGSUFjMkFoZ2dCU0FJTmdJUUlBVWdDVFlDQ0NBRklBWTJBaUFnQlNBQ05nSWNJQVVnQXpZQ0ZDQUZJQUUyQWd3Z0FFRUFOZ0p3SUFBZ0JUWUNiQXdEQ3lBQUlBSkJBMnNpQVRZQ2NDQUFRUUVnQVJBWElnTTJBbXdnQTBVTkFTQUNRUU5NRFFKQkFDRUNBMEFnQlNBRVFjd0Fha0VCRUJVZ0FDZ0NiQ0FDYWlBRUtBSk1PZ0FBSUFWQkFXb2hCU0FDUVFGcUlnSWdBVWNOQUFzTUFnc2dCMEVEU1EwQ0lBUWdCellDQUNBRFFRUkJxZndBSUFRUUV3d0NDMEVBSVFZZ0FFRUFOZ0p3REFFTFFRRWhCaUFBUVFFNkFId0xJQVJCMEFCcUpBQWdCZ3UwQXdFRGZ5TUFRU0JySWdRa0FBSkFJQUFvQWtnRVFDQURRUUpCd2paQkFCQVRRUUVoQWd3QkN5QUNRUTVIQkVCQkFDRUNJQU5CQVVISThBQkJBQkFUREFFTElBRWdBRUVRYWtFRUVCVWdBVUVFYWlBQVFReHFRUVFRRlNBQlFRaHFJQUJCRkdwQkFoQVZJQUFvQWd3aEJRSkFJQVFDZnlBQUtBSVFJZ1pGQkVBZ0FDZ0NGQXdCQ3lBQUtBSVVJZ0lnQlVVTkFCb2dBZzBCUVFBTE5nSUlJQVFnQmpZQ0JDQUVJQVUyQWdBZ0EwRUJRYXp2QUNBRUVCTkJBQ0VDREFFTElBSkJnWUFCYTBILy8zNU5CRUJCQUNFQ0lBTkJBVUhXN2dCQkFCQVREQUVMSUFBZ0FrRU1FQmNpQWpZQ1NDQUNSUVJBUVFBaEFpQURRUUZCKys0QVFRQVFFd3dCQzBFQklRSWdBVUVLYWlBQVFSaHFRUUVRRlNBQlFRdHFJQUJCSEdwQkFSQVZJQUFvQWh3aUJVRUhSd1JBSUFRZ0JUWUNFQ0FEUVFSQjYvNEFJQVJCRUdvUUV3c2dBVUVNYWlBQVFTQnFRUUVRRlNBQlFRMXFJQUJCSkdwQkFSQVZJQUFvQWdBaUFTQUJMUURVQVVIN0FYRWdBQ2dDR0VIL0FVWkJBblJ5T2dEVUFTQUFLQUlBSWdFZ0FDZ0NERFlDOEFFZ0FTQUFLQUlRTmdMMEFTQUFRUUU2QUlVQkN5QUVRU0JxSkFBZ0FndTNCQUVGZnlNQVFSQnJJZ1lrQUFKL0lBQXRBR1JCQW5GRkJFQWdBMEVCUWJmWUFFRUFFQk5CQUF3QkN5QUFRUUEyQW1nQ1FBSkFBa0FnQWdSQUEwQWdBa0VIVFFSQUlBTkJBVUdtR2tFQUVCTU1CUXNnQVNBR1FReHFJZ1ZCQkJBVklBWW9BZ3doQkNBQlFRUnFJQVZCQkJBVlFRZ2hCeUFHS0FJTUlRVUNRQUpBQWtBQ1FDQUVEZ0lCQUFNTElBSkJFRWtFUUVIT0dpRUVEQWNMSUFGQkNHb2dCa0VJYWtFRUVCVWdCaWdDQ0FSQVFkekJBQ0VFREFjTElBRkJER29nQmtFTWFrRUVFQlVnQmlnQ0RDSUVEUUZCbnhraEJBd0dDeUFEUVFGQm54bEJBQkFUREFZTFFSQWhCd3NnQkNBSFNRUkFJQU5CQVVHWHh3QkJBQkFUREFVTElBSWdCRWtFUUNBRFFRRkJ6OFlBUVFBUUUwRUFEQVlMQWtBQ1FDQUFJQUVnQjJvZ0JDQUhheUFEQW44Q1FBSkFBa0FnQlVIeDJMMmJCa3dFUUNBRlFlUEd3Wk1HUmcwQklBVkI1c3FSbXdaR0RRTWdCVUh3d3JXYkJrY05CVUdneFFFTUJBc2dCVUh5MkkyREIwWU5BVUdBeFFFZ0JVSHl5S0hMQmtZTkF4b2dCVUh5MkwyYkJrY05CRUdJeFFFTUF3dEJrTVVCREFJTFFaakZBUXdCQzBHb3hRRUxLQUlFRVFFQURRRkJBQXdIQ3lBQUlBQW9BbWhCLy8vLy93ZHlOZ0pvQzBFQklBZ2dCVUh5eUtITEJrWWJJUWdnQVNBRWFpRUJJQUlnQkdzaUFnMEFDeUFJRFFFTElBTkJBVUhyeFFCQkFCQVRRUUFNQXdzZ0FFRUJPZ0NFQVNBQUlBQW9BbVJCQkhJMkFtUkJBUXdDQ3lBRFFRRWdCRUVBRUJNTElBTkJBVUdMRDBFQUVCTkJBQXNnQmtFUWFpUUFDK0lCQVFGL0lBQW9BbVJCQVVjRVFDQURRUUZCNU5nQVFRQVFFMEVBRHdzQ1FDQUNRUWROQkVBTUFRc2dBU0FBUVRocVFRUVFGU0FCUVFScUlBQkJQR3BCQkJBVklBSkJBM0VFUUF3QkN5QUFJQUpCQ0dzaUFrRUNkaUlFTmdKQUFrQWdBa1VOQUNBQUlBUkJCQkFYSWdJMkFrUWdBa1VFUUNBRFFRRkJsaEZCQUJBVFFRQVBDeUFBS0FKQVJRMEFJQUZCQ0dvaEEwRUFJUUlEUUNBRElBQW9Ba1FnQWtFQ2RHcEJCQkFWSUFOQkJHb2hBeUFDUVFGcUlnSWdBQ2dDUUVrTkFBc0xJQUFnQUNnQ1pFRUNjallDWkVFQkR3c2dBMEVCUVo0dVFRQVFFMEVBQzM0QkFYOGpBRUVRYXlJRUpBQUNmeUFBS0FKa0JFQWdBMEVCUVlIWUFFRUFFQk5CQUF3QkN5QUNRUVJIQkVBZ0EwRUJRY0l1UVFBUUUwRUFEQUVMSUFFZ0JFRU1ha0VFRUJVZ0JDZ0NERUdLanFyb0FFY0VRQ0FEUVFGQjZpWkJBQkFUUVFBTUFRc2dBQ0FBS0FKa1FRRnlOZ0prUVFFTElBUkJFR29rQUF2RUFRRUNmeUFBSUFBb0FpQWlCRFlDSkFKQUlBQW9BakFpQXdSQUEwQWdCQ0FESUFBb0FnQWdBQ2dDRkJFQUFDSURRWDlHRFFJZ0FDQUFLQUlrSUFOcUlnUTJBaVFnQUNBQUtBSXdJQU5ySWdNMkFqQWdBdzBBQ3lBQUtBSWdJUVFMSUFCQkFEWUNNQ0FBSUFRMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ3dCRkJFQWdBQ0FBS0FKRVFRaHlOZ0pFUVFBUEN5QUFJQUUzQXpoQkFROExJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJ6L2tBUVFBUUV5QUFJQUFvQWtSQkNISTJBa1JCQUFzTkFDQUFLQUlBSUFFZ0FoQk9Dd2tBSUFBb0FnQVFVd3NKQUNBQUtBSUFFRklMRFFBZ0FDZ0NBQ0FCSUFJUVZRdEJBUUYvSUFJRWZ5QURRUUpCeTg4QVFRQVFFeUFBS0FJQUlBRWdBaUFESUFRUVQwVUVRQ0FEUVFGQm5UQkJBQkFUUVFBUEN5QUFJQUlnQXhCK0JVRUFDd3NWQUNBQUtBSUFJQUVnQWlBRElBUWdCU0FHRUZjTER3QWdBQ2dDQUNBQklBSWdBeEJZQ3hNQUlBQW9BZ0FnQVNBQ0lBTWdCQ0FGRURFTEhRQWdBQ2dDQUNBQklBSWdBeUFFSUFVZ0JpQUhJQWdnQ1NBS0VDd0w1UVFCQm44Z0FTZ0NDRUUySUFNUUtFVUVRRUVBRHdzZ0FTZ0NCQ0lJS0FJQUlRY2dDQ2dDQ0NFR0FrQWdCd1JBUVFFaEJTQUhRUUZ4SVFrZ0IwRUJSZ1IvUVFBRklBZEJmbkVoQndOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUhSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NSc2hCUUpBSUFsRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0NFRUFOZ0lBSUFVTkFVRUFEd3NnQ0VFQU5nSUFDeUFCS0FJSUlnY29BZ0FoQkNBSEtBSUlJUVlDUUNBRUJFQkJBU0VGSUFSQkFYRWhDQ0FFUVFGR0JIOUJBQVVnQkVGK2NTRUpRUUFoQkFOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUpSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NCc2hCUUpBSUFoRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0IwRUFOZ0lBSUFVTkFVRUFEd3NnQjBFQU5nSUFDeUFCTFFDRUFVVUVRQ0FEUVFGQmk5c0FRUUFRRTBFQUR3c2dBUzBBaFFGRkJFQWdBMEVCUWU3YUFFRUFFQk5CQUE4TElBQWdBU2dDQUNBQ0lBTVFXUUpBSUFKRkRRQWdBaWdDQUNJQVJRMEFRUUVoQkFKQUFrQUNRQUpBQWtBQ1FDQUJLQUl3UVF4ckRnMERCQVFFQlFBQkJBUUVCQVFDQkF0QkFpRUVEQVFMUVFNaEJBd0RDMEVFSVFRTUFndEJCU0VFREFFTFFYOGhCQXNnQUNBRU5nSVVJQUVvQW13aUJVVU5BQ0FBSUFVMkFod2dBaWdDQUNBQktBSndOZ0lnSUFGQkFEWUNiQXNMNGdrQ0NYOEJmaU1BUWZBQWF5SURKQUJCZ0FnaENBSi9Ba0JCQVVHQUNCQVhJZ1lFUUNBRFFkd0FhaUVMSUFOQjdBQnFJUWtEUUFKQUFrQUNRQ0FCSUFOQjZBQnFJZ1JCQ0NBQ0VCMUJDRWNOQUNBRUlBTkIyQUJxUVFRUUZTQUpJQXRCQkJBVlFRZ2hCUUpBQWtBQ1FBSkFBa0FnQXlnQ1dBNENBQUVFQ3lBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2lERUw0Ly8vL0QxTU5BU0FDUVFGQjNNRUFRUUFRRXd3RUN5QUJJQU5CNkFCcUlnUkJDQ0FDRUIxQkNFY05BeUFFSUFOQjVBQnFRUVFRRlNBREtBSmtSUTBCSUFKQkFVSGN3UUJCQUJBVERBTUxJQU1nREtkQkNHbzJBbGdNQVFzZ0NTQURRZGdBYWtFRUVCVkJFQ0VGQ3lBREtBSmNJZ1JCNCtUQTB3WkdCRUFnQUNnQ1pDSUJRUVJ4QkVBZ0FDQUJRUWh5TmdKa0RBSUxJQUpCQVVHaExFRUFFQk1nQmhBVVFRQU1Cd3NnQXlnQ1dDSUhSUVJBSUFKQkFVR2ZHVUVBRUJNZ0JoQVVRUUFNQndzZ0JTQUhTd1JBSUFNZ0JEWUNCQ0FESUFjMkFnQWdBa0VCUWNqc0FDQURFQk1NQmdzQ1FBSi9BbjhDUUFKL0FrQUNRQUpBQWtBQ1FDQUVRZkhZdlpzR1RBUkFJQVJCNDhiQmt3WkdEUUlnQkVIbXlwR2JCa1lOQkNBRVFmREN0WnNHUncwQlFhREZBUXdHQ3lBRVFaL0F3TklHVEFSQUlBUkI4dGk5bXdaR0RRVkJnTVVCSUFSQjhzaWh5d1pHRFFZYUlBUkI4UExSc3daSERRRkI2TVFCREFnTElBUkI4dGlOZ3dkR0RRSWdCRUdnd01EU0JrWU5Ca0h3eEFFZ0JFSG81TURUQmtZTkJ4b0xJQUFvQW1RaUJFRUJjUTBJSUFKQkFVSHBEMEVBRUJNZ0JoQVVRUUFNRHd0QmtNVUJEQU1MUVpqRkFRd0NDMEdveFFFTUFRdEJpTVVCQ3lFS0lBTWdCRUgvQVhFMkFrd2dBeUFFUVJoMk5nSkFJQU1nQkVFSWRrSC9BWEUyQWtnZ0F5QUVRUkIyUWY4QmNUWUNSQ0FDUVFKQnRnOGdBMEZBYXhBVElBY2dCV3NpQlNBQUxRQmtRUVJ4RFFJYUlBTWdBeWdDWENJRVFSaDJOZ0l3SUFNZ0JFSC9BWEUyQWp3Z0F5QUVRUkIyUWY4QmNUWUNOQ0FESUFSQkNIWkIvd0Z4TmdJNElBSkJBa0hPTkNBRFFUQnFFQk1nQUNBQUtBSmtRZi8vLy84SGNqWUNaQ0FCSUFXdElnd2dBaUFCS0FJb0VRZ0FJQXhSRFFjZ0FrRUJRZjhjUVFBUUV5QUdFQlJCQUF3S0MwSGd4QUVMSVFvZ0J5QUZhd3NoQlNBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2dCYTFUQkVBZ0F5Z0NXQ0VFSUFNb0Fsd2hBQ0FESUFFcEF3Z2lERkFFZmtJQUJTQU1JQUVwQXpoOUN6NENLQ0FESUFVMkFpUWdBeUFBUWY4QmNUWUNJQ0FESUFCQkdIWTJBaFFnQXlBRU5nSVFJQU1nQUVFSWRrSC9BWEUyQWh3Z0F5QUFRUkIyUWY4QmNUWUNHQ0FDUVFGQm0vb0FJQU5CRUdvUUV3d0hDeUFGSUFoTkJFQWdCaUVFREFRTElBVWhDQ0FHSUFVUUd5SUVEUU1nQmhBVUlBSkJBVUhzRUVFQUVCTkJBQXdIQ3lBRVFRSnhSUVJBSUFKQkFVR3ZFRUVBRUJNZ0JoQVVRUUFNQndzZ0FDQUVRZi8vLy84SGNqWUNaQ0FCSUFjZ0JXdXRJZ3dnQWlBQktBSW9FUWdBSUF4UkRRTWdBQzBBWkVFSWNVVU5BU0FDUVFKQi94eEJBQkFUQ3lBR0VCUkJBUXdGQ3lBQ1FRRkIveHhCQUJBVElBWVFGRUVBREFRTElBRWdCQ0FGSUFJUUhTQUZSd1JBSUFKQkFVR3hIVUVBRUJNZ0JCQVVRUUFNQkFzZ0FDQUVJZ1lnQlNBQ0lBb29BZ1FSQVFBTkFBc2dCQkFVUVFBTUFnc2dBa0VCUVpZbVFRQVFFMEVBREFFTElBWVFGRUVBQ3lBRFFmQUFhaVFBQytBQkFRWi9JQUFvQWdoQk5pQUNFQ2hGQkVCQkFBOExJQUFvQWdnaUJpZ0NBQ0VESUFZb0FnZ2hCUUpBSUFNRVFFRUJJUVFnQTBFQmNTRUhJQU5CQVVZRWYwRUFCU0FEUVg1eElRTURRQUovUVFBZ0JFVU5BQnBCQUNBQUlBRWdBaUFGS0FJQUVRQUFSUTBBR2lBQUlBRWdBaUFGS0FJRUVRQUFRUUJIQ3lFRUlBVkJDR29oQlNBSVFRSnFJZ2dnQTBjTkFBc2dCRVVMSVFOQkFDQUVJQWNiSVFRQ1FDQUhSUTBBSUFNTkFDQUFJQUVnQWlBRktBSUFFUUFBUVFCSElRUUxJQVpCQURZQ0FDQUVEUUZCQUE4TElBWkJBRFlDQUFzZ0FDZ0NBQnBCQVFzS0FDQUFLQUlBR2tFQUN5a0FBa0FnQUNnQ0FDSUFSUTBBSUFBZ0FUWUMwQUVnQVVVTkFDQUFJQUF0QUZ4QkNISTZBRndMQ3lFQUlBQW9BZ0FnQVJCY0lBQkJBRG9BZkNBQUlBRW9BcmhBUVFGeE5nS0FBUXN5QUNBQ1JRUkFRUUFQQ3lBQUtBSUFJQUVnQWlBREVGRkZCRUFnQTBFQlFaMHdRUUFRRTBFQUR3c2dBQ0FDSUFNUWZndHBBZ0ovQVh3akFFRVFheUlESkFBZ0FnUkFBMEFnQUNBRFFRaHFFRTBnQVFKL0lBTXJBd2dpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMTmdJQUlBRkJCR29oQVNBQVFRaHFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTGhBRUNBbjhCZlNNQVFSQnJJZ01rQUNBQ0JFQURRQ0FESUFBdEFBQTZBQThnQXlBQUxRQUJPZ0FPSUFNZ0FDMEFBam9BRFNBRElBQXRBQU02QUF3Z0FRSi9JQU1xQWd3aUJZdERBQUFBVDEwRVFDQUZxQXdCQzBHQWdJQ0FlQXMyQWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TEFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFRUVCVWdBU0FES0FJTU5nSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxTd0VDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NERFlDQUNBQlFRUnFJUUVnQUVFQ2FpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzBvQkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUWhxRUUwZ0FTQURLd01JdGpnQ0FDQUJRUVJxSVFFZ0FFRUlhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMyZ0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBeUFBTFFBQU9nQVBJQU1nQUMwQUFUb0FEaUFESUFBdEFBSTZBQTBnQXlBQUxRQURPZ0FNSUFFZ0F5b0NERGdDQUNBQlFRUnFJUUVnQUVFRWFpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUXhxUVFRUUZTQUJJQU1vQWd5ek9BSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxUQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NETE00QWdBZ0FVRUVhaUVCSUFCQkFtb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF1cUNBSU5md0Y3SXdCQkVHc2lDQ1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaENRSkFJQUpGQkVBZ0EwRUJRZjRnUVFBUUV3d0JDeUFBS0FKZ0lRWkJBU0VFSUFFZ0NFRUlha0VCRUJVZ0NDZ0NDQ0lGUVFKUEJFQWdBMEVDUVp2TUFFRUFFQk1NQVFzZ0JVRUJhaUFDUndSQVFRQWhCQ0FEUVFKQi9pQkJBQkFUREFFTEFrQWdCaWdDRUNJRFJRMEFJQWtvQXRBcklRUWdBMEVJVHdSQUlBTkJlSEVoQmtFQUlRSURRQ0FFUVFBMkFyeERJQVJCQURZQ2hEc2dCRUVBTmdMTU1pQUVRUUEyQXBRcUlBUkJBRFlDM0NFZ0JFRUFOZ0trR1NBRVFRQTJBdXdRSUFSQkFEWUN0QWdnQkVIQXd3QnFJUVFnQWtFSWFpSUNJQVpIRFFBTEN5QURRUWR4SWdORkRRQkJBQ0VDQTBBZ0JFRUFOZ0swQ0NBRVFiZ0lhaUVFSUFKQkFXb2lBaUFEUncwQUN3c2dDU2dDNkNzaUFnUi9JQUlRRkNBSlFRQTJBdWdySUFnb0FnZ0ZJQVVMUlFSQVFRRWhCQXdCQ3dOQUlBRkJBV29pQVNBSVFReHFRUUVRRlFKQUlBa29Bb0FzUlEwQUlBa29BdndySWdNb0FnQWdDQ2dDREVjTkFDQURLQUlFSWdVZ0FDZ0NZQ0lHS0FJUVJ3MEFJQU1vQWdnaUFnUkFRUUFoQkNBQ0tBSVFJQVVnQld3aUJTQUNLQUlBUVFKMFFaRENBV29vQWdCc1J3MERJQWtnQlVFQ2RCQVlJZ2MyQXVncklBZEZEUU1nQWlnQ0RDQUhJQVVnQWlnQ0FFRUNkRUhBeEFGcUtBSUFFUVVBQ3lBREtBSU1JZ0pGRFFCQkFDRUVJQUlvQWhBZ0JpZ0NFQ0lESUFJb0FnQkJBblJCa01JQmFpZ0NBR3hIRFFJZ0EwRUNkQkFZSWdWRkRRSWdBaWdDRENBRklBTWdBaWdDQUVFQ2RFSFF4QUZxS0FJQUVRVUFBa0FnQmlnQ0VDSUhSUTBBSUFrb0F0QXJJUVJCQUNFTEFrQUNRQ0FIUVFSSkRRQWdCRUcwQ0dvaURDQUZJQWRCQW5ScVNRUkFJQVVnQkNBSFFiZ0liR3BKRFFFTElBUkIzQ0ZxSVEwZ0JFR2tHV29oRGlBRVFld1FhaUVQSUFVZ0IwRjhjU0lHUVFKMGFpRUNJQVFnQmtHNENHeHFJUVJCQUNFREEwQWdEQ0FEUWJnSWJDSUthaUFGSUFOQkFuUnEvUUFDQUNJUi9Wb0NBQUFnQ2lBUGFpQVIvVm9DQUFFZ0NpQU9haUFSL1ZvQ0FBSWdDaUFOYWlBUi9Wb0NBQU1nQTBFRWFpSURJQVpIRFFBTElBWWdCMFlOQWd3QkN5QUZJUUpCQUNFR0N5QUhJQVlpQTJ0QkIzRWlDZ1JBQTBBZ0JDQUNLQUlBTmdLMENDQURRUUZxSVFNZ0JFRzRDR29oQkNBQ1FRUnFJUUlnQzBFQmFpSUxJQXBIRFFBTEN5QUdJQWRyUVhoTERRQURRQ0FFSUFJb0FnQTJBclFJSUFRZ0FpZ0NCRFlDN0JBZ0JDQUNLQUlJTmdLa0dTQUVJQUlvQWd3MkF0d2hJQVFnQWlnQ0VEWUNsQ29nQkNBQ0tBSVVOZ0xNTWlBRUlBSW9BaGcyQW9RN0lBUWdBaWdDSERZQ3ZFTWdCRUhBd3dCcUlRUWdBa0VnYWlFQ0lBTkJDR29pQXlBSFJ3MEFDd3NnQlJBVUMwRUJJUVFnRUVFQmFpSVFJQWdvQWdoSkRRQUxDeUFJUVJCcUpBQWdCQXNFQUVKL0M3c0pBUXAvSXdCQkVHc2lCU1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEJ3Si9JQUpCQVUwRVFDQURRUUZCekNSQkFCQVRRUUFNQVFzZ0FTQUZRUXhxUVFJUUZTQUZLQUlNQkVBZ0EwRUNRZVF0UVFBUUUwRUJEQUVMSUFKQkJrMEVRQ0FEUVFGQnpDUkJBQkFUUVFBTUFRc2dBVUVDYWlBRlFRaHFRUUVRRlNBSEtBTDhLeUlKSVFBQ1FBSkFBa0FnQnlnQ2dDd2lCa1VOQUNBRktBSUlJUWdEUUNBQUtBSUFJQWhHRFFFZ0FFRVVhaUVBSUFSQkFXb2lCQ0FHUncwQUN3d0JDeUFFSUFaSERRRUxJQWNvQW9Rc0lBWkdCSDhnQnlBR1FRcHFJZ0EyQW9Rc0lBa2dBRUVVYkJBYklnQkZCRUFnQnlnQy9Dc1FGQ0FIUVFBMkFvUXNJQWRDQURjQy9Dc2dBMEVCUWVZa1FRQVFFMEVBREFNTElBY2dBRFlDL0NzZ0FDQUhLQUtBTENJRVFSUnNha0VBSUFjb0FvUXNJQVJyUVJSc0VCa2FJQWNvQXZ3cklRa2dCeWdDZ0N3RklBWUxRUlJzSUFscUlRQkJBU0VMQ3lBQUlBVW9BZ2cyQWdBZ0FVRURhaUFGUVF4cVFRSVFGU0FGS0FJTUJFQWdBMEVDUWVRdFFRQVFFMEVCREFFTElBRkJCV29nQlVFRWFrRUNFQlVnQlNnQ0JDSUVRUUpQQkVBZ0EwRUNRWlVZUVFBUUUwRUJEQUVMSUFKQkIyc2hCaUFFQkVBZ0FVRUhhaUVDUVFBaENRTkFJQVpCQWswRVFDQURRUUZCekNSQkFCQVRRUUFNQXdzZ0FpQUZRUXhxUVFFUUZTQUZLQUlNUVFGSEJFQWdBMEVDUWFZclFRQVFFMEVCREFNTElBSkJBV29nQlVFQ0VCVWdBQ0FGS0FJQUlnUkIvLzhCY1NJQk5nSUVJQVpCQTJzaUNDQUVRUTkyUVFGcUlnWWdBV3hCQW1vaUNra0VRQ0FEUVFGQnpDUkJBQkFUUVFBTUF3c2dBa0VEYWlFQ1FRQWhCQ0FCQkVBRFFDQUNJQVZCREdvZ0JoQVZJQVFnQlNnQ0RFY0VRQ0FEUVFKQnpqQkJBQkFUUVFFTUJRc2dBaUFHYWlFQ0lBUkJBV29pQkNBQUtBSUVTUTBBQ3dzZ0FpQUZRUUlRRlNBRklBVW9BZ0FpQkVILy93RnhJZ0UyQWdBZ0FDZ0NCQ0FCUndSQUlBTkJBa0hGR1VFQUVCTkJBUXdEQ3lBSUlBcHJJZ29nQkVFUGRrRUJhaUlHSUFGc1FRTnFJZ3hKQkVBZ0EwRUJRY3drUVFBUUUwRUFEQU1MSUFKQkFtb2hBa0VBSVFRZ0FRUkFBMEFnQWlBRlFReHFJQVlRRlNBRUlBVW9BZ3hIQkVBZ0EwRUNRYzR3UVFBUUUwRUJEQVVMSUFJZ0Jtb2hBaUFFUVFGcUlnUWdBQ2dDQkVrTkFBc0xJQUlnQlVFTWFrRURFQlVnQlNnQ0RDRUdJQUJDQURjQ0NDQUFJQVpCZ0lBRWNVVWdBQzBBRUVIK0FYRnlPZ0FRSUFVZ0JrSC9BWEVpQ0RZQ0NBSkFJQWhGRFFBZ0J5Z0M5Q3NpRFFSQUlBY29BdkFySVFSQkFDRUJBMEFnQ0NBRUtBSUlSZ1JBSUFBZ0JEWUNDQXdEQ3lBRVFSUnFJUVFnQVVFQmFpSUJJQTFIRFFBTEN5QURRUUZCekNSQkFCQVRRUUFNQXdzZ0JTQUdRUWgyUWY4QmNTSUdOZ0lJQWtBZ0JrVU5BQ0FIS0FMMEt5SUlCRUFnQnlnQzhDc2hCRUVBSVFFRFFDQUdJQVFvQWdoR0JFQWdBQ0FFTmdJTURBTUxJQVJCRkdvaEJDQUJRUUZxSWdFZ0NFY05BQXNMSUFOQkFVSE1KRUVBRUJOQkFBd0RDeUFLSUF4cklRWWdBa0VEYWlFQ0lBbEJBV29pQ1NBRktBSUVTUTBBQ3dzZ0JnUkFJQU5CQVVITUpFRUFFQk5CQUF3QkMwRUJJQXRGRFFBYUlBY2dCeWdDZ0N4QkFXbzJBb0FzUVFFTElBVkJFR29rQUF2MUFRRUZmeU1BUVJCcklnUWtBQUpBSUFBb0FtQW9BaEFpQmtFQ2FpQUNSd1JBSUFOQkFVSGtJMEVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FHSUFRb0FneEhCRUFnQTBFQlFlUWpRUUFRRXd3QkN5QUdSUVJBUVFFaEJRd0JDeUFCUVFKcUlRSWdBQ2dDWUNnQ0dDRUFRUUFoQVFOQUlBSWdCRUVJYWtFQkVCVWdBQ0FFS0FJSUlnVkIvd0J4SWdkQkFXb2lDRFlDR0NBQUlBVkJCM1pCQVhFMkFpQWdCMEVmVHdSQUlBUWdDRFlDQkNBRUlBRTJBZ0FnQTBFQlFZWDRBQ0FFRUJOQkFDRUZEQUlMSUFCQk5Hb2hBRUVCSVFVZ0FrRUJhaUVDSUFGQkFXb2lBU0FHUncwQUN3c2dCRUVRYWlRQUlBVUxsQVVCQ1g4akFFRVFheUlISkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDdEFFZ0FDZ0M1QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUZBbjhnQWtFQlRRUkFJQU5CQVVIL0gwRUFFQk5CQUF3QkN5QUJJQWRCREdwQkFoQVZBa0FnQnlnQ0RBUkFJQU5CQWtIekcwRUFFQk1NQVFzZ0FrRUdUUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFCUVFKcUlBZEJER3BCQWhBVklBVW9BdkFySVFRZ0J5MEFEQ0VLQWtBQ1FBSkFJQVVvQXZRcklnWkZCRUFnQkNFQURBRUxJQVFoQUFOQUlBQW9BZ2dnQ2tZTkFTQUFRUlJxSVFBZ0NFRUJhaUlJSUFaSERRQUxEQUVMSUFZZ0NFY05BUXNnQlNnQytDc2dCa1lFUUNBRklBWkJDbW9pQURZQytDc2dCQ0FBUVJSc0VCc2hBQ0FGS0FMd0t5RUVJQUJGQkVBZ0JCQVVJQVZCQURZQytDc2dCVUlBTndMd0t5QURRUUZCbVNCQkFCQVRRUUFNQkFzQ1FDQUFJQVJHRFFBZ0JTZ0NnQ3dpQzBVTkFDQUZLQUw4S3lFTVFRQWhDQU5BSUF3Z0NFRVViR29pQmlnQ0NDSUpCRUFnQmlBQUlBa2dCR3RxTmdJSUN5QUdLQUlNSWdrRVFDQUdJQUFnQ1NBRWEybzJBZ3dMSUFoQkFXb2lDQ0FMUncwQUN3c2dCU0FBTmdMd0t5QUFJQVVvQXZRcklnUkJGR3hxUVFBZ0JTZ0MrQ3NnQkd0QkZHd1FHUm9nQlNnQzlDc2hCaUFGS0FMd0t5RUVDeUFGSUFaQkFXbzJBdlFySUFRZ0JrRVViR29oQUFzZ0FDZ0NEQ0lFQkVBZ0JCQVVJQUJDQURjQ0RBc2dBQ0FLTmdJSUlBQWdCeWdDRENJRVFRcDJRUU54TmdJQUlBQWdCRUVJZGtFRGNUWUNCQ0FCUVFScUlBZEJER3BCQWhBVklBY29BZ3dFUUNBRFFRSkJxaGRCQUJBVERBRUxJQUFnQWtFR2F5SUNFQmdpQkRZQ0RDQUVSUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFFSUFGQkJtb2dBaEFXR2lBQUlBSTJBaEFMUVFFTElBZEJFR29rQUFzbkFFRUJJUUVnQUNnQ1lDZ0NFRUVDZENBQ1J3Ui9JQU5CQVVITElrRUFFQk5CQUFWQkFRc0xwd01CQkg4akFFRVFheUlHSkFBQ2Z5QUNRUUZOQkVBZ0EwRUJRZW9lUVFBUUUwRUFEQUVMSUFBdEFOUUJRUUZ4QkVBZ0EwRUJRZGZpQUVFQUVCTkJBQXdCQ3lBQUtBSzBBU0FBS0FMa0FVR01MR3hxSWdBZ0FDMEFpQ3hCQW5JNkFJZ3NJQUVnQmtFTWFrRUJFQlVDUUNBQUtBS3NLQ0lFUlFSQUlBQWdCaWdDREVFQmFpSUZRUWdRRnlJRU5nS3NLQ0FFUlFSQUlBTkJBVUdFSDBFQUVCTkJBQXdEQ3lBQUlBVTJBcWdvREFFTElBWW9BZ3dpQlNBQUtBS29LRWtOQUNBRUlBVkJBV29pQkVFRGRCQWJJZ1ZGQkVBZ0EwRUJRWVFmUVFBUUUwRUFEQUlMSUFBZ0JUWUNyQ2dnQlNBQUtBS29LQ0lIUVFOMGFrRUFJQVFnQjJ0QkEzUVFHUm9nQUNBRU5nS29LQ0FBS0FLc0tDRUVDeUFFSUFZb0Fnd2lCVUVEZEdvb0FnQUVRQ0FHSUFVMkFnQWdBMEVCUWZJMklBWVFFMEVBREFFTElBSkJBV3NpQWhBWUlRUWdBQ2dDckNnaUFDQUdLQUlNSWdWQkEzUnFJQVEyQWdBZ0JFVUVRQ0FEUVFGQmhCOUJBQkFUUVFBTUFRc2dBQ0FGUVFOMGFpQUNOZ0lFSUFBZ0JpZ0NERUVEZEdvb0FnQWdBVUVCYWlBQ0VCWWFRUUVMSUFaQkVHb2tBQXY2QWdFRWZ5TUFRUkJySWdZa0FBSi9JQUpCQVUwRVFDQURRUUZCc2lGQkFCQVRRUUFNQVFzZ0FDQUFMUURVQVVFQmNqb0ExQUVnQVNBR1FReHFRUUVRRlFKQUlBQW9Bb3dCSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBWElnUTJBb3dCSUFSRkJFQWdBMEVCUWN3aFFRQVFFMEVBREFNTElBQWdCVFlDaUFFTUFRc2dCaWdDRENJRklBQW9Bb2dCU1EwQUlBUWdCVUVCYWlJRVFRTjBFQnNpQlVVRVFDQURRUUZCekNGQkFCQVRRUUFNQWdzZ0FDQUZOZ0tNQVNBRklBQW9Bb2dCSWdkQkEzUnFRUUFnQkNBSGEwRURkQkFaR2lBQUlBUTJBb2dCSUFBb0Fvd0JJUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQmlEY2dCaEFUUVFBTUFRc2dBa0VCYXlJQ0VCZ2hCQ0FBS0FLTUFTSUFJQVlvQWd3aUJVRURkR29nQkRZQ0FDQUVSUVJBSUFOQkFVSE1JVUVBRUJOQkFBd0JDeUFBSUFWQkEzUnFJQUkyQWdRZ0FDQUdLQUlNUVFOMGFpZ0NBQ0FCUVFGcUlBSVFGaHBCQVFzZ0JrRVFhaVFBQzV3QkFRTi9Jd0JCRUdzaUJDUUFBbjhnQWtVRVFDQURRUUZCNVI5QkFCQVRRUUFNQVFzZ0FTQUVRUXhxUVFFUUZVRUJJQUpCQVdzaUJVVU5BQnBCQUNFQVFRQWhBZ05BSUFGQkFXb2lBU0FFUVFocVFRRVFGU0FFS0FJSUlnWkJHSFJCSDNVZ0JrSC9BSEVnQW5KQkIzUnhJUUlnQUVFQmFpSUFJQVZIRFFBTFFRRWdBa1VOQUJvZ0EwRUJRZVVmUVFBUUUwRUFDeUFFUVJCcUpBQUxHd0JCQVNFQUlBSUVmMEVCQlNBRFFRRkI4aUZCQUJBVFFRQUxDOW9FQVFkL0l3QkJJR3NpQkNRQVFRRWhCUUpBSUFKQkFVMEVRRUVBSVFVZ0EwRUJRYW5PQUVFQUVCTU1BUXNnQUNnQ1RBMEFJQUVnQkVFY2FrRUJFQlVnQVVFQmFpQUVRUmhxUVFFUUZTQUVLQUlZSWdaQkJIWkJBM0VpQjBFRFJnUkFJQUJCQVRZQ1RDQURRUUpCZ2RvQVFRQVFFd3dCQ3lBQ1FRSnJJZ0lnQWlBR1FRVjJRUUp4UVFKcUlna2dCMm9pQ0c0aUJpQUliRWNFUUNBQVFRRTJBa3dnQTBFQ1FkN1dBRUVBRUJNTUFRc2dBaUFJU1EwQUFrQWdBQ2dDUkNJQ0lBWkJmM05OQkVBZ0FpQUdhaUlDUVlDQWdJQUNTUTBCQ3lBQVFRRTJBa3dnQTBFQ1FaUEpBRUVBRUJNTUFRc2dBQ2dDU0NBQ1FRTjBFQnNpQ0VVRVFDQUFRUUUyQWt3Z0EwRUNRYjdKQUVFQUVCTU1BUXNnQVVFQ2FpRUNJQUFnQ0RZQ1NBSkFJQWNFUUVFQklBWWdCa0VCVFJzaENrRUFJUVlEUUNBQ0lBUkJGR29nQnhBVklBUW9BaFFpQVNBQUtBS0VBU0FBS0FLQUFXeFBEUUlnQWlBSGFpSUJJQVJCRUdvZ0NSQVZJQWdnQUNnQ1JDSUNRUU4wYWlJRklBUW9BaFE3QVFBZ0JTQUVLQUlRTmdJRVFRRWhCU0FBSUFKQkFXbzJBa1FnQVNBSmFpRUNJQVpCQVdvaUJpQUtSdzBBQ3d3Q0MwRUJJQVlnQmtFQlRSc2hCeUFBS0FKRUlRRkJBQ0VHQTBBZ0JDQUJOZ0lVSUFFZ0FDZ0NoQUVnQUNnQ2dBRnNUdzBCSUFJZ0JFRVFhaUFKRUJVZ0NDQUFLQUpFSWdwQkEzUnFJZ1VnQVRzQkFDQUZJQVFvQWhBMkFnUkJBU0VGSUFBZ0NrRUJhaUlCTmdKRUlBSWdDV29oQWlBR1FRRnFJZ1lnQjBjTkFBc01BUXNnQUVFQk5nSk1JQVFnQVRZQ0FDQURRUUpCMGp3Z0JCQVRDeUFFUVNCcUpBQWdCUXNFQUVFQUN3dkx3UUVoQUVHQUNBdmdtUUZqWVc1dWIzUWdZV3hzYjJOaGRHVWdiM0JxWDNSalpGOXpaV2RmWkdGMFlWOWphSFZ1YTE5MEtpQmhjbkpoZVFBdEt5QWdJREJZTUhnQUxUQllLekJZSURCWUxUQjRLekI0SURCNEFGVnVhMjV2ZDI0Z1ptOXliV0YwQUVaaGFXeGxaQ0IwYnlCelpYUjFjQ0IwYUdVZ1pHVmpiMlJsY2dCR1lXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2FHVmhaR1Z5QUc1aGJnQXFiRjkwYVd4bFgyeGxiaUErSUZWSlRsUmZUVUZZSUMwZ1QxQktYME5QVFUxUFRsOURRa3hMWDBSQlZFRmZSVmhVVWtFZ0xTQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9BR2x1WmdCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUhSb1pTQnBiV0ZuWlFCSmJuWmhiR2xrSUdGalkyVnpjeUIwYnlCd2FTMCthVzVqYkhWa1pRQXZkRzF3TDI5d1pXNXFjR1ZuTDNOeVl5OWlhVzR2WTI5dGJXOXVMMk52Ykc5eUxtTUFRVXhNWDBOUVZWTUFUMUJLWDA1VlRWOVVTRkpGUVVSVEFFNUJUZ0JQU2xCZlJFOWZUazlVWDBSSlUxQk1RVmxmVkVsTVJWOUpUa1JGV0Y5SlJsOVVURTBBU1U1R0FIQmZhakpyTFQ1dFgzTndaV05wWm1salgzQmhjbUZ0TG0xZlpHVmpiMlJsY2k1dFgzTnZkRjlzWlc1bmRHZ2dQaUJWU1U1VVgwMUJXQ0F0SUU5UVNsOURUMDFOVDA1ZlEwSk1TMTlFUVZSQlgwVllWRkpCQUFrSkNTQndjbVZqWTJsdWRITnBlbVVnS0hjc2FDazlBQWtKQ1NCemRHVndjMmw2WlhNZ0tHMHNaU2s5QUZOUFZDQnRZWEpyWlhJZ1ptOXlJSFJwYkdVZ0pYVWdaR1ZqYkdGeVpYTWdiVzl5WlNCMGFXeGxMWEJoY25SeklIUm9ZVzRnWm05MWJtUWdhVzRnVkV4TklHMWhjbXRsY2k0QUtHNTFiR3dwQUNnbFpDd2xaQ2tnQUNWemZRb0FDUWtnZlFvQVcwUkZWbDBnUkhWdGNDQmhiaUJwYldGblpWOWpiMjF3WDJobFlXUmxjaUJ6ZEhKMVkzUWdld29BVzBSRlZsMGdSSFZ0Y0NCaGJpQnBiV0ZuWlY5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUVsdFlXZGxJR2x1Wm04Z2V3b0FDU0JrWldaaGRXeDBJSFJwYkdVZ2V3b0FKWE1KSUdOdmJYQnZibVZ1ZENBbFpDQjdDZ0FKQ1NCamIyMXdJQ1ZrSUhzS0FBa2dWR2xzWlNCcGJtUmxlRG9nZXdvQUNTQk5ZWEpyWlhJZ2JHbHpkRG9nZXdvQVEyOWtaWE4wY21WaGJTQnBibVJsZUNCbWNtOXRJRzFoYVc0Z2FHVmhaR1Z5T2lCN0NnQkRiMlJsYzNSeVpXRnRJR2x1Wm04Z1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnS0FFWnZkVzVrSUdFZ2JXbHpjR3hoWTJWa0lDY2xZeVZqSldNbFl5Y2dZbTk0SUc5MWRITnBaR1VnYW5BeWFDQmliM2dLQUUxaGJHWnZjbTFsWkNCS1VESWdabWxzWlNCbWIzSnRZWFE2SUdacGNuTjBJR0p2ZUNCdGRYTjBJR0psSUVwUVJVY2dNakF3TUNCemFXZHVZWFIxY21VZ1ltOTRDZ0JOWVd4bWIzSnRaV1FnU2xBeUlHWnBiR1VnWm05eWJXRjBPaUJ6WldOdmJtUWdZbTk0SUcxMWMzUWdZbVVnWm1sc1pTQjBlWEJsSUdKdmVBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR3B3WldjeU1EQXdJR0p2ZUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2QybDBhQ0JHVkZsUUlFSnZlQW9BUVNCdFlYSnJaWElnU1VRZ2QyRnpJR1Y0Y0dWamRHVmtJQ2d3ZUdabUxTMHBJR2x1YzNSbFlXUWdiMllnSlM0NGVBb0FDUWtnYldOMFBTVjRDZ0FKQ1FrZ1kySnNhM04wZVQwbEkzZ0tBQWtKQ1NCamMzUjVQU1VqZUFvQUNRa2djSEpuUFNVamVBb0FTVzUwWldkbGNpQnZkbVZ5Wm14dmR3b0FDU0IwWkhnOUpYVXNJSFJrZVQwbGRRb0FDU0IwZHowbGRTd2dkR2c5SlhVS0FBa2dkSGd3UFNWMUxDQjBlVEE5SlhVS0FFbHVkbUZzYVdRZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0T2lBbGRRb0FVM1J5WldGdElIUnZieUJ6YUc5eWRBb0FUV0Z5YTJWeUlHaGhibVJzWlhJZ1puVnVZM1JwYjI0Z1ptRnBiR1ZrSUhSdklISmxZV1FnZEdobElHMWhjbXRsY2lCelpXZHRaVzUwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdZM1Z5Y21WdWRDQndjbVZqYVc1amRDQmpiMlJsWW14dlkyc2daV3hsYldWdWRBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MENnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUlkyUWdiM0lnVTFGall5QmxiR1Z0Wlc1MENnQkJJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQnBjeUJoZG1GcGJHRmliR1VnWVd4MGFHOTFaMmdnUWxCRElHZHBkbVZ1SUdKNUlIUm9aU0JKU0VSU0lHSnZlQ0FvSldRcElHbHVaR2xqWVhSbElHTnZiWEJ2Ym1WdWRITWdZbWwwSUdSbGNIUm9JR2x6SUdOdmJuTjBZVzUwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJR2xzYkdWbllXd2dkR2xzWlNCdlptWnpaWFFLQUVsdWRtRnNhV1FnY0hKbFkybHVZM1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHaGhibVJzWlNCaVlXNWtJSEJ5WldOcGJuUnpDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR0ZzYkNCMWMyVmtJR052YlhCdmJtVnVkSE1LQUZOcGVtVWdiMllnWTI5a1pTQmliRzlqYXlCa1lYUmhJR1Y0WTJWbFpITWdjM2x6ZEdWdElHeHBiV2wwY3dvQVUybDZaU0J2WmlCMGFXeGxJR1JoZEdFZ1pYaGpaV1ZrY3lCemVYTjBaVzBnYkdsdGFYUnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ1RVTlVJRzFoY210bGNuTUtBRU52Y25KMWNIUmxaQ0JRVUUwZ2JXRnlhMlZ5Y3dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJSFJwYkdVZ2NtVnpiMngxZEdsdmJuTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdGRXeDBhWEJzWlNCamIyeHNaV04wYVc5dWN3b0FTVzUyWVd4cFpDQlFRMHhTSUdKdmVDNGdVbVZ3YjNKMGN5QXdJSEJoYkdWMGRHVWdZMjlzZFcxdWN3b0FWMlVnWkc4Z2JtOTBJSE4xY0hCdmNuUWdVazlKSUdsdUlHUmxZMjlrYVc1bklFaFVJR052WkdWaWJHOWphM01LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlIVnVaR1ZtYVc1bFpDQnphWHBsY3dvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJR052Ykd4bFkzUnBiMjV6SUhkcGRHaHZkWFFnYzJGdFpTQnVkVzFpWlhJZ2IyWWdhVzVrYVhobGN3b0FTVzUyWVd4cFpDQjBhV3hsWXkwK2QybHVYM2g0ZUNCMllXeDFaWE1LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlHeGxjM01nZEdoaGJpQTRJR0o1ZEdWekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUZoTUlHSnZlQ0J2WmlCc1pYTnpJSFJvWVc0Z01UWWdZbmwwWlhNS0FFTnZiWEJ2Ym1WdWRDQnBibVJsZUNBbGRTQjFjMlZrSUhObGRtVnlZV3dnZEdsdFpYTUtBRWx1ZG1Gc2FXUWdVRU5NVWlCaWIzZ3VJRkpsY0c5eWRITWdKV1FnWlc1MGNtbGxjd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1kzSmxZWFJsSUZSaFp5MTBjbVZsSUc1dlpHVnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JXTjBJR1JoZEdFZ2QybDBhR2x1SUcxMWJIUnBjR3hsSUUxRFZDQnlaV052Y21SekNnQkRZVzV1YjNRZ1pHVmpiMlJsSUhScGJHVXNJRzFsYlc5eWVTQmxjbkp2Y2dvQWIzQnFYMm95YTE5aGNIQnNlVjl1WWw5MGFXeGxYM0JoY25SelgyTnZjbkpsWTNScGIyNGdaWEp5YjNJS0FGQnliMkpzWlcwZ2QybDBhQ0J6YTJsd2NHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lISmxZV1JwYm1jZ1NsQkZSekl3TURBZ1ltOTRMQ0J6ZEhKbFlXMGdaWEp5YjNJS0FGVnVhMjV2ZDI0Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnZEd3Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnYldnZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QjBZV3RsSUdsdUlHTm9ZWEpuWlNCVFNWb2diV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1VGQlVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFQxUWdiV0Z5YTJWeUNnQkVhV1FnYm05MElHZGxkQ0JsZUhCbFkzUmxaQ0JUVDFRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5VSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lITndZV05sSUdadmNpQmxlSEJsWTNSbFpDQlRUMUFnYldGeWEyVnlDZ0JGZUhCbFkzUmxaQ0JUVDFBZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRTFEVHlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVa2RPSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRkJRVFNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRXhOSUcxaGNtdGxjZ29BUlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjbVZ4ZFdseVpXUWdSVkJJSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QkRVa2NnYldGeWEyVnlDZ0JWYm10dWIzZHVJSEJ5YjJkeVpYTnphVzl1SUc5eVpHVnlJR2x1SUVOUFJDQnRZWEpyWlhJS0FGVnVhMjV2ZDI0Z1UyTnZaQ0IyWVd4MVpTQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVVU5FSUcxaGNtdGxjZ29BUTNKeWIzSWdjbVZoWkdsdVp5QkRRa1FnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlBReUJ0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1EwOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUlEwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUUxRFF5QnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1RVTkRJRzFoY210bGNnb0FjbVZ4ZFdseVpXUWdVMGxhSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBSEpsY1hWcGNtVmtJRU5QUkNCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0J5WlhGMWFYSmxaQ0JSUTBRZ2JXRnlhMlZ5SUc1dmRDQm1iM1Z1WkNCcGJpQnRZV2x1SUdobFlXUmxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2FHRnVaR3hsSUdwd1pXY3lNREF3SUdacGJHVWdhR1ZoWkdWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lHaGxZV1JsY2dvQVJYSnliM0lnZDJsMGFDQktVQ0JUYVdkdVlYUjFjbVVnT2lCaVlXUWdiV0ZuYVdNZ2JuVnRZbVZ5Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCamRYSnlaVzUwSUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCd2NtVjJhVzkxY3lCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ1kzVnljbVZ1ZENCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDaG9aV0ZrWlhJcElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQWRHbHNaWE1nY21WeGRXbHlaU0JoZENCc1pXRnpkQ0J2Ym1VZ2NtVnpiMngxZEdsdmJnb0FUV0Z5YTJWeUlHbHpJRzV2ZENCamIyMXdiR2xoYm5RZ2QybDBhQ0JwZEhNZ2NHOXphWFJwYjI0S0FGQnliMkpzWlcwZ2QybDBhQ0J6WldWcklHWjFibU4wYVc5dUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUVEyOWtJRk5RUTI5aklHVnNaVzFsYm5Rc0lFbHVkbUZzYVdRZ1kySnNhM2N2WTJKc2EyZ2dZMjl0WW1sdVlYUnBiMjRLQUVsdWRtRnNhV1FnYlhWc2RHbHdiR1VnWTI5dGNHOXVaVzUwSUhSeVlXNXpabTl5YldGMGFXOXVDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1kyOXNiR1ZqZEdsdmJuTWdiM1JvWlhJZ2RHaGhiaUJoY25KaGVTQmtaV052Y25KbGJHRjBhVzl1Q2dCVWIyOGdiR0Z5WjJVZ2RtRnNkV1VnWm05eUlFNXdjRzBLQUU1dmRDQmxibTkxWjJnZ1lubDBaWE1nZEc4Z2NtVmhaQ0JPY0hCdENnQmlZV1FnY0d4aFkyVmtJR3B3WldjZ1kyOWtaWE4wY21WaGJRb0FDU0JOWVdsdUlHaGxZV1JsY2lCemRHRnlkQ0J3YjNOcGRHbHZiajBsYkd4cENna2dUV0ZwYmlCb1pXRmtaWElnWlc1a0lIQnZjMmwwYVc5dVBTVnNiR2tLQUUxaGNtdGxjaUJ6YVhwbElHbHVZMjl1YzJsemRHVnVkQ0IzYVhSb0lITjBjbVZoYlNCc1pXNW5kR2dLQUZScGJHVWdjR0Z5ZENCc1pXNW5kR2dnYzJsNlpTQnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQnpkSEpsWVcwZ2JHVnVaM1JvQ2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdiWFZzZEdsd2JHVWdaR0YwWVNCemNHRnVibWx1WndvQVYzSnZibWNnWm14aFp3b0FSWEp5YjNJZ2QybDBhQ0JHVkZsUUlITnBaMjVoZEhWeVpTQkNiM2dnYzJsNlpRb0FSWEp5YjNJZ2QybDBhQ0JLVUNCemFXZHVZWFIxY21VZ1FtOTRJSE5wZW1VS0FFbHVkbUZzYVdRZ2NISmxZMmx1WTNRZ2MybDZaUW9BU1c1amIyNXphWE4wWlc1MElHMWhjbXRsY2lCemFYcGxDZ0JKYm5aaGJHbGtJRzFoY210bGNpQnphWHBsQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSWdjMmw2WlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUdFZ2JtVjNJSFpoYkdsa1lYUnBiMjRnY0hKdlkyVmtkWEpsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmtaV052WkdVZ2RHbHNaUW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0IwYUdVZ1kyOWtaWE4wY21WaGJTQnBiaUIwYUdVZ1NsQXlJR1pwYkdVS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCM2FYUm9JR2x1WkdsNElITm9kV1ptYkdVS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCVWFXVnlJREVnYUdGdVpHeGxDZ0JPYnlCa1pXTnZaR1ZrSUdGeVpXRWdjR0Z5WVcxbGRHVnljeXdnYzJWMElIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ2RHOGdkR2hsSUhkb2IyeGxJR2x0WVdkbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbGFXNXBkR2xoYkdsNlpTQjBhR1VnZEdGbklIUnlaV1VLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQ3dnU1c1MllXeHBaQ0IwY21GdWMyWnZjbTFoZEdsdmJpQm1iM1Z1WkFvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwTGlCVmJuTjFjSEJ2Y25SbFpDQk5hWGhsWkNCSVZDQmpiMlJsTFdKc2IyTnJJSE4wZVd4bElHWnZkVzVrQ2dCVWFXeGxJRmtnWTI5dmNtUnBibUYwWlhNZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FGUnBiR1VnV0NCamIyOXlaR2x1WVhSbGN5QmhjbVVnYm05MElITjFjSEJ2Y25SbFpBb0FTVzFoWjJVZ1kyOXZjbVJwYm1GMFpYTWdZV0p2ZG1VZ1NVNVVYMDFCV0NCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVNsQkZSekl3TURBZ1NHVmhaR1Z5SUdKdmVDQnViM1FnY21WaFpDQjVaWFFzSUNjbFl5VmpKV01sWXljZ1ltOTRJSGRwYkd3Z1ltVWdhV2R1YjNKbFpBb0FiM0JxWDJveWExOXRaWEpuWlY5d2NIUW9LU0JvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpBb0FiM0JxWDJveWExOWlkV2xzWkY5MGNGOXBibVJsZUY5bWNtOXRYM1JzYlNncE9pQjBhV3hsSUdsdVpHVjRJR0ZzYkc5allYUnBiMjRnWm1GcGJHVmtDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRk5QVkNCdFlYSnJaWEl1SUZScGJHVWdhVzVrWlhnZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzWldRS0FFbG5ibTl5YVc1bklHbG9aSElnWW05NExpQkdhWEp6ZENCcGFHUnlJR0p2ZUNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0hRZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCYWNIQnRJQ1YxSUdGc2NtVmhaSGtnY21WaFpBb0FVRlJGVWswZ1kyaGxZMnNnWm1GcGJIVnlaVG9nSldRZ2MzbHVkR2hsYzJsNlpXUWdNSGhHUmlCdFlYSnJaWEp6SUhKbFlXUUtBQWtKQ1NCallteHJkejB5WGlWa0NnQUpDUWtnWTJKc2EyZzlNbDRsWkFvQUNRa0pJSEZ1ZEhOMGVUMGxaQW9BSlhNZ1pIZzlKV1FzSUdSNVBTVmtDZ0FKQ1FrZ2NtOXBjMmhwWm5ROUpXUUtBQWtKQ1NCdWRXMW5ZbWwwY3owbFpBb0FDUWtnYm5WdGJHRjVaWEp6UFNWa0NnQWxjeUJ1ZFcxamIyMXdjejBsWkFvQWIzQnFYMnB3TWw5aGNIQnNlVjlqWkdWbU9pQmhZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdOdVBTVmtMQ0J1ZFcxamIyMXdjejBsWkFvQUNRa0pJRzUxYlhKbGMyOXNkWFJwYjI1elBTVmtDZ0FKQ1NCMGVYQmxQU1VqZUN3Z2NHOXpQU1ZzYkdrc0lHeGxiajBsWkFvQUpYTWdjMmR1WkQwbFpBb0FDUWtKSUhGdFptSnBaRDBsWkFvQUpYTWdjSEpsWXowbFpBb0FDUWtnYm1JZ2IyWWdkR2xzWlMxd1lYSjBJR2x1SUhScGJHVWdXeVZrWFQwbFpBb0FKWE1nZURFOUpXUXNJSGt4UFNWa0NnQWxjeUI0TUQwbFpDd2dlVEE5SldRS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ2RHbHNaU0FsWkM4bFpBb0FVMlYwZEdsdVp5QmtaV052WkdsdVp5QmhjbVZoSUhSdklDVmtMQ1ZrTENWa0xDVmtDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR052YlhCdmJtVnVkQ0FsWkFvQVNXNTJZV3hwWkNCMllXeDFaU0JtYjNJZ2JuVnRjbVZ6YjJ4MWRHbHZibk1nT2lBbFpDd2diV0Y0SUhaaGJIVmxJR2x6SUhObGRDQnBiaUJ2Y0dWdWFuQmxaeTVvSUdGMElDVmtDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0J1ZFcxaVpYSTZJQ1ZrTENCeVpXZGhjbVJwYm1jZ2RHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNWa0NnQlViMjhnYldGdWVTQlFUME56SUNWa0NnQnZjR3BmYWpKclgzSmxZV1JmZEd4dEtDazZJR2x1ZG1Gc2FXUWdkR2xzWlNCdWRXMWlaWElnSldRS0FFbHVkbUZzYVdRZ2RHbHNaU0J1ZFcxaVpYSWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQndZWEowSUdsdVpHVjRJR1p2Y2lCMGFXeGxJRzUxYldKbGNpQWxaQzRnUjI5MElDVmtMQ0JsZUhCbFkzUmxaQ0FsWkFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHbHNiR1ZuWVd3Z0xUNGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFWmhhV3hsWkNCMGJ5QnRaWEpuWlNCUVVGUWdaR0YwWVFvQVJtRnBiR1ZrSUhSdklHMWxjbWRsSUZCUVRTQmtZWFJoQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCc1lYbGxjbk1nYVc0Z1EwOUVJRzFoY210bGNpQTZJQ1ZrSUc1dmRDQnBiaUJ5WVc1blpTQmJNUzAyTlRVek5WMEtBQ1Z6T2lWa09tTnZiRzl5WDJOdGVXdGZkRzlmY21kaUNnbERRVTRnVGs5VUlFTlBUbFpGVWxRS0FDVnpPaVZrT21OdmJHOXlYMlZ6ZVdOalgzUnZYM0puWWdvSlEwRk9JRTVQVkNCRFQwNVdSVkpVQ2dBbGN6b2xaRHBqYjJ4dmNsOXplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0JUZEhKbFlXMGdkRzl2SUhOb2IzSjBMQ0JsZUhCbFkzUmxaQ0JUVDFRS0FGVnVZV0pzWlNCMGJ5QnpaWFFnZERFZ2FHRnVaR3hsSUdGeklGUk1Vd29BVTI5MElHeGxibWQwYUNCcGN5QnNaWE56SUhSb1lXNGdiV0Z5YTJWeUlITnBlbVVnS3lCdFlYSnJaWElnU1VRS0FGTjBjbVZoYlNCa2IyVnpJRzV2ZENCbGJtUWdkMmwwYUNCRlQwTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJSE5wZW1WeklHaHBaMmhsY2lCMGFHRnVJREplTXpJS0FHOXdhbDl3YVY5dVpYaDBYMnh5WTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0pzWTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYMk53Y213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0JqY213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0p3WTJ3b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDkwTVY5a1pXTnZaR1ZmWTJKc2F5Z3BPaUIxYm5OMWNIQnZjblJsWkNCaWNHNXZYM0JzZFhOZmIyNWxJRDBnSldRZ1BqMGdNekVLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdsc1pTQXhMekVLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRUVUZRSUdKdmVDNEtBRTVsWldRZ2RHOGdjbVZoWkNCaElGQkRURklnWW05NElHSmxabTl5WlNCMGFHVWdRMDFCVUNCaWIzZ3VDZ0JKYm5OMVptWnBZMmxsYm5RZ1pHRjBZU0JtYjNJZ1EwUkZSaUJpYjNndUNnQk9kVzFpWlhJZ2IyWWdZMmhoYm01bGJDQmtaWE5qY21sd2RHbHZiaUJwY3lCbGNYVmhiQ0IwYnlCNlpYSnZJR2x1SUVORVJVWWdZbTk0TGdvQVUzUnlaV0Z0SUdWeWNtOXlJSGRvYVd4bElISmxZV1JwYm1jZ1NsQXlJRWhsWVdSbGNpQmliM2c2SUc1dklDZHBhR1J5SnlCaWIzZ3VDZ0JPYjI0Z1kyOXVabTl5YldGdWRDQmpiMlJsYzNSeVpXRnRJRlJRYzI5MFBUMVVUbk52ZEM0S0FGTjBjbVZoYlNCbGNuSnZjaUIzYUdsc1pTQnlaV0ZrYVc1bklFcFFNaUJJWldGa1pYSWdZbTk0T2lCaWIzZ2diR1Z1WjNSb0lHbHpJR2x1WTI5dWMybHpkR1Z1ZEM0S0FFSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FVbVZ6YjJ4MWRHbHZiaUJtWVdOMGIzSWdhWE1nWjNKbFlYUmxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJSEpsYzI5c2RYUnBiMjRnYVc0Z2RHaGxJR052YlhCdmJtVnVkQzRLQUVOdmJYQnZibVZ1ZENCdFlYQndhVzVuSUhObFpXMXpJSGR5YjI1bkxpQlVjbmxwYm1jZ2RHOGdZMjl5Y21WamRDNEtBRzl3YWw5cU1tdGZZblZwYkdSZmRIQmZhVzVrWlhoZlpuSnZiVjkwYkcwb0tUb2dkR2xzWlNBbFpDQm9ZWE1nYm04Z2NtVm5hWE4wWlhKbFpDQjBhV3hsTFhCaGNuUWdhVzRnVkV4TklHMWhjbXRsY2lCelpXZHRaVzUwY3k0S0FHOXdhbDlxTW10ZmNtVmhaRjkwYkcwb0tUb2dkRzl2SUcxaGJua2dWRXhOSUcxaGNtdGxjbk11Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklHTmhibTV2ZENCaGJHeHZZMkYwWlNCdFgzUnBiR1ZmY0dGeWRGOXBibVp2Y3k0S0FFbHVZMjl0Y0d4bGRHVWdZMmhoYm01bGJDQmtaV1pwYm1sMGFXOXVjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRWx1ZG1Gc2FXUWdZMjlrWldKc2IyTnJJR3hsYm1kMGFDQjJZV3gxWlhNdUNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQnRiM0psSUhSb1lXNGdNeUJqYjJScGJtY2djR0Z6YzJWeklHbHVJR0Z1SUVoVUlHTnZaR1ZpYkc5amF6c2dWR2hwY3lCamIyUmxZbXh2WTJ0eklHaGhjeUFsWkNCd1lYTnpaWE11Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJVYUdWeVpTQmhjbVVnSldRZ2VtVnlieUJpYVhSd2JHRnVaWE1nYVc0Z0pXUWdZbWwwY0d4aGJtVnpMZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElIUnlZVzV6Wm05eWJXRjBhVzl1SUhOMFlXZGxjeTRLQUZWdWEyNXZkMjRnYldGeWEyVnlJR2hoY3lCaVpXVnVJR1JsZEdWamRHVmtJR0Z1WkNCblpXNWxjbUYwWldRZ1pYSnliM0l1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRIVndYMlJsWTI5a1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNKbFlXUmZhR1ZoWkdWeUlHWjFibU4wYVc5dUlHbHpJRzV2ZENCaElHUmxZMjl0Y0hKbGMzTnZjaUJvWVc1a2JHVnlMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlVURTBnYldGeWEyVnlMZ29BVkdsc1pYTWdaRzl1SjNRZ1lXeHNJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUxpQlRhMmx3SUhSb1pTQk5RMVFnYzNSbGNDNEtBRTUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNnbFpDa2dhWE1nYVc1amIyNXphWE4wWlc1MElIZHBkR2dnWVNCTlExUXVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BU2xBeUlHSnZlQ0IzYUdsamFDQmhjbVVnWVdaMFpYSWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0J1YjNRZ1ltVWdjbVZoWkNCaWVTQjBhR2x6SUdaMWJtTjBhVzl1TGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVjJobGJpQjBhR1VnYm5WdFltVnlJRzltSUhwbGNtOGdjR3hoYm1WeklHSnBkSEJzWVc1bGN5QnBjeUJsY1hWaGJDQjBieUIwYUdVZ2JuVnRZbVZ5SUc5bUlHSnBkSEJzWVc1bGN5d2diMjVzZVNCMGFHVWdZMnhsWVc1MWNDQndZWE56SUcxaGEyVnpJSE5sYm5ObExDQmlkWFFnZDJVZ2FHRjJaU0FsWkNCd1lYTnpaWE1nYVc0Z2RHaHBjeUJqYjJSbFlteHZZMnN1SUZSb1pYSmxabTl5WlN3Z2IyNXNlU0IwYUdVZ1kyeGxZVzUxY0NCd1lYTnpJSGRwYkd3Z1ltVWdaR1ZqYjJSbFpDNGdWR2hwY3lCdFpYTnpZV2RsSUhkcGJHd2dibTkwSUdKbElHUnBjM0JzWVhsbFpDQmhaMkZwYmk0S0FFbHRZV2RsSUdoaGN5QnNaWE56SUdOdmJYQnZibVZ1ZEhNZ2RHaGhiaUJqYjJSbGMzUnlaV0Z0TGdvQVRtVmxaQ0IwYnlCa1pXTnZaR1VnZEdobElHMWhhVzRnYUdWaFpHVnlJR0psWm05eVpTQmlaV2RwYmlCMGJ5QmtaV052WkdVZ2RHaGxJSEpsYldGcGJtbHVaeUJqYjJSbGMzUnlaV0Z0TGdvQVVITnZkQ0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGFXeGxMWEJoY25RZ2FYTWdaWEYxWVd3Z2RHOGdlbVZ5Ynl3Z2QyVWdZWE56ZFcxcGJtY2dhWFFnYVhNZ2RHaGxJR3hoYzNRZ2RHbHNaUzF3WVhKMElHOW1JSFJvWlNCamIyUmxjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FiM0JxWDJveWExOXlaV0ZrWDNSc2JTZ3BPaUJVVEUwZ2JXRnlhMlZ5SUc1dmRDQnZaaUJsZUhCbFkzUmxaQ0J6YVhwbExnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklGTlVJRDBnTXlCcGN5QnBiblpoYkdsa0xnb0FUMjVzZVNCdmJtVWdRMDFCVUNCaWIzZ2dhWE1nWVd4c2IzZGxaQzRLQUZkbElHNWxaV1FnWVc0Z2FXMWhaMlVnY0hKbGRtbHZkWE5zZVNCamNtVmhkR1ZrTGdvQVNVaEVVaUJpYjNoZmJXbHpjMmx1Wnk0Z1VtVnhkV2x5WldRdUNnQktVREpJSUdKdmVDQnRhWE56YVc1bkxpQlNaWEYxYVhKbFpDNEtBRTV2ZENCemRYSmxJR2h2ZHlCMGFHRjBJR2hoY0hCbGJtVmtMZ29BVFdGcGJpQm9aV0ZrWlhJZ2FHRnpJR0psWlc0Z1kyOXljbVZqZEd4NUlHUmxZMjlrWldRdUNnQlVhV3hsSUNWa0x5VmtJR2hoY3lCaVpXVnVJR1JsWTI5a1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BVlc1bGVIQmxZM1JsWkNCUFQwMHVDZ0F6TWlCaWFYUnpJR0Z5WlNCdWIzUWdaVzV2ZFdkb0lIUnZJR1JsWTI5a1pTQjBhR2x6SUdOdlpHVmliRzlqYXl3Z2MybHVZMlVnZEdobElHNTFiV0psY2lCdlppQmlhWFJ3YkdGdVpTd2dKV1FzSUdseklHeGhjbWRsY2lCMGFHRnVJRE13TGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYzJodmRXeGtJR0psSUQ0Z01DNEtBRkpwWjJoMElIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTRNVDBsWkNrZ2MyaHZkV3hrSUdKbElENGdNQzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2MyaHZkV3hrSUdKbElENDlJREF1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2djMmh2ZFd4a0lHSmxJRDQ5SURBdUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJNklIQmhZMnRsZENCb1pXRmtaWElnYUdGMlpTQmlaV1Z1SUhCeVpYWnBiM1Z6YkhrZ1ptOTFibVFnYVc0Z2RHaGxJRzFoYVc0Z2FHVmhaR1Z5SUNoUVVFMGdiV0Z5YTJWeUtTNEtBRk4wWVhKMElIUnZJSEpsWVdRZ2FqSnJJRzFoYVc0Z2FHVmhaR1Z5SUNnbGJHeGtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmx6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0hOcGVqMGxaQ2t1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XSE5wZWowbFpDa3VDZ0JDYjNSMGIyMGdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t4UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JWY0NCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVUQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZsUGMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmhQYzJsNlBTVmtLUzRLQUZOcGVtVWdlQ0J2WmlCMGFHVWdaR1ZqYjJSbFpDQmpiMjF3YjI1bGJuUWdhVzFoWjJVZ2FYTWdhVzVqYjNKeVpXTjBJQ2hqYjIxd1d5VmtYUzUzUFNWa0tTNEtBRk5wZW1VZ2VTQnZaaUIwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5RZ2FXMWhaMlVnYVhNZ2FXNWpiM0p5WldOMElDaGpiMjF3V3lWa1hTNW9QU1ZrS1M0S0FGUnBiR1VnY21WaFpDd2daR1ZqYjJSbFpDQmhibVFnZFhCa1lYUmxaQ0JwY3lCdWIzUWdkR2hsSUdSbGMybHlaV1FnYjI1bElDZ2xaQ0IyY3lBbFpDa3VDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVDQWxaQ0FvUGowZ0pXUXBMZ29BYjNCcVgzSmxZV1JmYUdWaFpHVnlLQ2tnYzJodmRXeGtJR0psSUdOaGJHeGxaQ0JpWldadmNtVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITW9LUzRLQUUxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVnYVc0Z2IzQnFYMnB3TWw5aGNIQnNlVjl3WTJ4eUtDa3VDZ0JwYldGblpTMCtZMjl0Y0hOYkpXUmRMbVJoZEdFZ1BUMGdUbFZNVENCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdWRtRnNhV1FnWW05NElITnBlbVVnSldRZ0tDVjRLUW9BUm1GcGJDQjBieUJ5WldGa0lIUm9aU0JqZFhKeVpXNTBJRzFoY210bGNpQnpaV2R0Wlc1MElDZ2xJM2dwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRWxJUkZJZ2R5Z2xkU2tnYUNnbGRTa2dkbk11SUZOSldpQjNLQ1YxS1NCb0tDVjFLUW9BUlhKeWIzSWdjbVZoWkdsdVp5QkRUME1nYldGeWEyVnlJQ2hpWVdRZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITXBDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUIwYVd4bGN5QTZJQ1YxSUhnZ0pYVWdLRzFoZUdsdGRXMGdabWw0WldRZ1lua2dhbkJsWnpJd01EQWdibTl5YlNCcGN5QTJOVFV6TlNCMGFXeGxjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tHbG9aSElwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FXMWhaMlVnYUdWaFpHVnlJQ2hwYUdSeUtRb0FWM0p2Ym1jZ2RtRnNkV1Z6SUdadmNqb2dkeWdsWkNrZ2FDZ2xaQ2tnYm5WdFkyOXRjSE1vSldRcElDaHBhR1J5S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJR1I0UFNWMUlHUjVQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F5TlRVZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1VFVkhNakF3TUNCdWIzSnRLUW9BUW1Ga0lHbHRZV2RsSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVOUFRGSWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCQ1lXUWdRbEJEUXlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2JtVm5ZWFJwZG1VZ2IzSWdlbVZ5YnlCcGJXRm5aU0J6YVhwbElDZ2xiR3hrSUhnZ0pXeHNaQ2tLQUhOcmFYQTZJSE5sWjIxbGJuUWdkRzl2SUd4dmJtY2dLQ1ZrS1NCM2FYUm9JRzFoZUNBb0pXUXBJR1p2Y2lCamIyUmxZbXh2WTJzZ0pXUWdLSEE5SldRc0lHSTlKV1FzSUhJOUpXUXNJR005SldRcENnQnlaV0ZrT2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BUkdWemNHbDBaU0JLVURJZ1FsQkRJVDB5TlRVc0lIQnlaV05wYzJsdmJpQmhibVF2YjNJZ2MyZHVaQ0IyWVd4MVpYTWdabTl5SUdOdmJYQmJKV1JkSUdseklHUnBabVpsY21WdWRDQjBhR0Z1SUdOdmJYQmJNRjA2Q2lBZ0lDQWdJQ0FnV3pCZElIQnlaV01vSldRcElITm5ibVFvSldRcElGc2xaRjBnY0hKbFl5Z2xaQ2tnYzJkdVpDZ2xaQ2tLQUdKaFpDQmpiMjF3YjI1bGJuUWdiblZ0WW1WeUlHbHVJRkpIVGlBb0pXUWdkMmhsYmlCMGFHVnlaU0JoY21VZ2IyNXNlU0FsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZENCcGN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCeVpXMWhhVzVwYm1jZ2JuVnRZbVZ5SUc5bUlIQmhjbUZ0WlhSbGNuTWdLQ0FsWkNCMmN5QWxaQ2tLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhVzUyWVd4cFpDQjBhV3hsSUhOcGVtVWdLSFJrZURvZ0pXUXNJSFJrZVRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoaVlXUWdjMmw2WlRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoRFNVVk1ZV0lzSUdKaFpDQnphWHBsT2lBbFpDa0tBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lISmxiV0ZwYm1sdVp5QmllWFJsY3lCcGJpQmpiMlJsSUdKc2IyTnJJQ2dsWkNCMWMyVmtJQzhnSldRcENnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCUGJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNGdhWE1nYm05MElHMWxkRG9nTWlBOFBTQlRZM1Z3SUR3OUlHMXBiaWhNWTNWd0xDQTBNRGM1S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJSEJ5WldNOUpYVWdLSE5vYjNWc1pDQmlaU0JpWlhSM1pXVnVJREVnWVc1a0lETTRJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlM0Z1QzQmxia3B3WldjZ2IyNXNlU0J6ZFhCd2IzSjBjeUIxY0NCMGJ5QXpNU2tLQUVsdWRtRnNhV1FnWW1sMElHNTFiV0psY2lBbFpDQnBiaUJ2Y0dwZmRESmZjbVZoWkY5d1lXTnJaWFJmYUdWaFpHVnlLQ2tLQUZOMGNtVmhiU0JsY25KdmNpRUtBRVZ5Y205eUlHOXVJSGR5YVhScGJtY2djM1J5WldGdElRb0FVM1J5WldGdElISmxZV05vWldRZ2FYUnpJR1Z1WkNBaENnQkZlSEJsWTNSbFpDQmhJRk5QUXlCdFlYSnJaWElnQ2dCSmJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lHWnZjaUJpYjNnZ0p5VmpKV01sWXlWakp5NGdUbVZsWkNBbFpDQmllWFJsY3l3Z0pXUWdZbmwwWlhNZ2NtVnRZV2x1YVc1bklBb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZWOXhJR2x6SUd4aGNtZGxjaUIwYUdGdUlIcGxjbThnWW1sMGNHeGhibVZ6SUNzZ01TQUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwYzJ4aGNtZGxjaUIwYUdGdUlHSnBkSEJzWVc1bGN5QXJJREVnQ2dCRFQweFNJRUpQV0NCdFpYUm9JSFpoYkhWbElHbHpJRzV2ZENCaElISmxaM1ZzWVhJZ2RtRnNkV1VnS0NWa0tTd2djMjhnZDJVZ2QybHNiQ0JwWjI1dmNtVWdkR2hsSUdWdWRHbHlaU0JEYjJ4dmRYSWdVM0JsWTJsbWFXTmhkR2x2YmlCaWIzZ3VJQW9BVjJocGJHVWdjbVZoWkdsdVp5QkRRMUJmVVU1VVUxUlpJR1ZzWlcxbGJuUWdhVzV6YVdSbElGRkRSQ0J2Y2lCUlEwTWdiV0Z5YTJWeUlITmxaMjFsYm5Rc0lHNTFiV0psY2lCdlppQnpkV0ppWVc1a2N5QW9KV1FwSUdseklHZHlaV0YwWlhJZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwTGlCVGJ5QjNaU0JzYVcxcGRDQjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUhOMGIzSmxaQ0IwYnlCUFVFcGZTakpMWDAxQldFSkJUa1JUSUNnbFpDa2dZVzVrSUhOcmFYQWdkR2hsSUhKbGMzUXVJQW9BU2xBeUlFbElSRklnWW05NE9pQmpiMjF3Y21WemMybHZiaUIwZVhCbElHbHVaR2xqWVhSbElIUm9ZWFFnZEdobElHWnBiR1VnYVhNZ2JtOTBJR0VnWTI5dVptOXliV2x1WnlCS1VESWdabWxzWlNBb0pXUXBJQW9BVkdsc1pTQnBibVJsZUNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQnBjeUJwYm1OdmNuSmxZM1FnSldRZ0tHMWhlQ0E5SUNWa0tTQUtBRVZ5Y205eUlHUmxZMjlrYVc1bklHTnZiWEJ2Ym1WdWRDQWxaQzRLVkdobElHNTFiV0psY2lCdlppQnlaWE52YkhWMGFXOXVjeUIwYnlCeVpXMXZkbVVnS0NWa0tTQnBjeUJuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJvWVc0Z2RHaGxJRzUxYldKbGNpQnZaaUJ5WlhOdmJIVjBhVzl1Y3lCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZENBb0pXUXBDazF2WkdsbWVTQjBhR1VnWTNCZmNtVmtkV05sSUhCaGNtRnRaWFJsY2k0S0NnQkpiV0ZuWlNCa1lYUmhJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUWdkMmwwYUNCMGFXeGxJQ1ZrTGdvS0FDTUFwUUJEQUdZQWd3RHVxQlFBMzlnakFMNFFRd0QvOVlNQWZpQlZBRjlSSXdBMUFFTUFUa1NEQU03RUZBRFB6Q01BL3VKREFQK1pnd0NXQU1VQVB6RWpBS1VBUXdCZVJJTUF6c2dVQU44Ukl3RCs5RU1BLy95REFKNEFWUUIzQUNNQU5RQkRBUC94Z3dDdWlCUUF0d0FqQVA3NFF3RHY1SU1Bam9qRkFCOFJJd0NsQUVNQVpnQ0RBTzZvRkFEZlZDTUF2aEJEQU84aWd3QitJRlVBZnlJakFEVUFRd0JPUklNQXpzUVVBTDhSSXdEKzRrTUE5d0NEQUpZQXhRQS9JaU1BcFFCREFGNUVnd0RPeUJRQTF3QWpBUDcwUXdEL3VvTUFuZ0JWQUc4QUl3QTFBRU1BLythREFLNklGQUN2b2lNQS92aERBT2NBZ3dDT2lNVUFMeUlDQU1VQWhBQitJQUlBenNRa0FQY0FBZ0Qrb2tRQVZnQUNBSjRBRkFEWEFBSUF2aENFQUdZQUFnQ3VpQ1FBM3hFQ0FPNm9SQUEyQUFJQWpvZ1VBQjhSQWdERkFJUUFiZ0FDQU02SUpBRC9pQUlBL3JoRUFFNUVBZ0NXQUJRQXR3QUNBUDdraEFCZVJBSUFwZ0FrQU9jQUFnRGVWRVFBTGlJQ0FENEFGQUIzQUFJQXhRQ0VBSDRnQWdET3hDUUEvL0VDQVA2aVJBQldBQUlBbmdBVUFMOFJBZ0MrRUlRQVpnQUNBSzZJSkFEdklnSUE3cWhFQURZQUFnQ09pQlFBZnlJQ0FNVUFoQUJ1QUFJQXpvZ2tBTy9rQWdEK3VFUUFUa1FDQUpZQUZBQ3ZvZ0lBL3VTRUFGNUVBZ0NtQUNRQTM5Z0NBTjVVUkFBdUlnSUFQZ0FVQUY5UkFnQlZBSVFBWmdBQ0FONklKQUQvTWdJQS9oRkVBRTVFQWdDdUFCUUF0d0FDQUg0eGhBQmVVUUlBeGdBa0FOY0FBZ0R1SUVRQUhoRUNBSjRBRkFCM0FBSUFWUUNFQUY1VUFnRE9SQ1FBNXdBQ0FQN3hSQUEyQUFJQXBnQVVBRjlWQWdEK2RJUUFQaEVDQUw0Z0pBQi9kQUlBM3NSRUFQLzRBZ0NXQUJRQUx5SUNBRlVBaEFCbUFBSUEzb2drQVBjQUFnRCtFVVFBVGtRQ0FLNEFGQUNQaUFJQWZqR0VBRjVSQWdER0FDUUF6OGdDQU80Z1JBQWVFUUlBbmdBVUFHOEFBZ0JWQUlRQVhsUUNBTTVFSkFEZjBRSUEvdkZFQURZQUFnQ21BQlFBZnlJQ0FQNTBoQUErRVFJQXZpQWtBTDhpQWdEZXhFUUE3eUlDQUpZQUZBQS9NZ01BM3RUOTlQLzhGQUErRVZVQWo0Z0RBTDR5aFFEbkFDVUFYbEgrcW45eUF3RE9SUDM0NzBRVUFINWtSUUN2b2dNQXBnQmRWZCtaL2ZFMkFQNzFiMklEQU43Ui9mVC81aFFBZm5GVkFMK3hBd0N1aUlVQTM5VWxBRTVFL3ZKL1pnTUF4Z0Q5K08vaUZBQmVWRVVBbnhFREFKWUFYVlhQeVAzeEhoSHV5R2NBQXdEZTFQMzAvL01VQUQ0UlZRQy9FUU1BdmpLRkFOL1lKUUJlVWY2cUx5SURBTTVFL2ZqM0FCUUFmbVJGQUorWUF3Q21BRjFWMXdEOThUWUEvdlZ2UkFNQTN0SDk5UCs1RkFCK2NWVUF0d0FEQUs2SWhRRGYzQ1VBVGtUKzhuY0FBd0RHQVAzNDcrUVVBRjVVUlFCL2N3TUFsZ0JkVmIrNC9mRWVFZTdJUHpJQ0FLVUFoQUIrUUFJQTNoQWtBTjhSQWdEK2NrUUFWZ0FDQUs2b0ZBQy9zZ0lBbGdDRUFHWUFBZ0RHQUNRQTV3QUNBTzdJUkFBdUlnSUFqb2dVQUhjQUFnQ2xBSVFBYmdBQ0FNNklKQUQzQUFJQS9wRkVBRFlBQWdDdW9oUUFyNm9DQVA2NGhBQmVBQUlBdmdBa0FNL0VBZ0R1UkVRQS8vUUNBRDRpRkFBZkVRSUFwUUNFQUg1QUFnRGVFQ1FBLzVrQ0FQNXlSQUJXQUFJQXJxZ1VBTGNBQWdDV0FJUUFaZ0FDQU1ZQUpBRFhBQUlBN3NoRUFDNGlBZ0NPaUJRQVQwUUNBS1VBaEFCdUFBSUF6b2drQU8vaUFnRCtrVVFBTmdBQ0FLNmlGQUIvUkFJQS9yaUVBRjRBQWdDK0FDUUFud0FDQU81RVJBRC9kZ0lBUGlJVUFEOHhBd0RHQUlVQS85bjk4bjVrL3ZHL21RTUFycUlsQU85bS9mUldBTzdpZjNNREFMNllSUUQzQVAzNFpnRCtkcCtJQXdDT2lCVUEzOVdsQUM0aTNwaFBSQU1BdnJLRkFQLzgvZkp1SXBZQXR3QURBSzZxSlFEZjBmMzBOZ0RlMUc5a0F3Q3VxRVVBNytyOStGNUU3dWgvY1FNQVBqSVZBTS9FcFFELytzNklQekVEQU1ZQWhRRC9kLzN5Zm1UKzhiK3pBd0N1b2lVQTV3RDk5RllBN3VKM0FBTUF2cGhGQU8vay9maG1BUDUyZjJZREFJNklGUURYQUtVQUxpTGVtRDh6QXdDK3NvVUEvM1g5OG00aWxnQ2ZrUU1BcnFvbEFOK1ovZlEyQU43VVgxRURBSzZvUlFEdjdQMzRYa1R1Nkg5eUF3QStNaFVBdjdHbEFQL3p6b2dmRVFNQTNsVDk4aDRSRkFCK1pQNzR6OHdEQUw2UlJRRHZJaVVBTGlMKzg0K0lBd0RHQUlVQTl3QVVBRjRSL3Z5dnFBTUFwZ0ExQU4vSS9mRStNZjVtYjJRREFNN0kvZkwvOVJRQVpnRCs5TCs2QXdDdUlrVUE1d0FsQUQ0eS91cC9jd01BdnJLRkFOOVZGQUJXQUg1eG54RURBSllBTlFEUHhQM3hQalB1NkU5RUF3RGVWUDN5SGhFVUFINWsvdmkvbVFNQXZwRkZBTy9pSlFBdUl2N3pmMllEQU1ZQWhRRHY1QlFBWGhIKy9KK1lBd0NtQURVQTF3RDk4VDR4L21adklnTUF6c2o5OHYrNUZBQm1BUDcwdHdBREFLNGlSUURmMFNVQVBqTCs2bmNBQXdDK3NvVUE3K3dVQUZZQWZuRi9jZ01BbGdBMUFMKzQvZkUrTSs3b1gxVDg4ZDdSL2ZyWEFQejRGZ0Q5LzM5MC9QUitjZjN6djdQODh1L3E3dWhQUlB6eHJpSUZBTCs0L1BqM0FQNzhkd0Q4OUY0Ui9mVi9kZnp5MzlqdTRqOHovUEcrc3YzNno0ajgrUC83L2Y5L2MvejBiZ0Q5ODdjQS9QTHZadjc1UHpIODhaNEFCUUMvdXZ6NC8vMys5bWNBL1BRbUFQMzFqNGo4OHQvYzN0UXZJdnp4M3RIOStzL0UvUGdXQVAzL2YzTDg5SDV4L2ZPL21menk3K3p1NkVjQS9QR3VJZ1VBcHdEOCtQLzMvdnhYQVB6MFhoSDk5WmNBL1BMZjFlN2lOd0Q4OGI2eS9mckhBUHo0Ly83OS8zOW0vUFJ1QVAzenI2ajg4dWNBL3ZrL012enhuZ0FGQUwreC9QanY1UDcyWDFUODlDWUEvZldIQVB6eTM1bmUxQjhSRXdCbEFFTUEzZ0NEQUkySUl3Qk9SQk1BcFFCREFLNklnd0ExQUNNQTF3QVRBTVVBUXdDZUFJTUFWUUFqQUM0aUV3Q1ZBRU1BZmdDREFQNFFJd0IzQUJNQVpRQkRBTTZJZ3dDTmlDTUFIaEVUQUtVQVF3QmVBSU1BTlFBakFPY0FFd0RGQUVNQXZnQ0RBRlVBSXdEL0VSTUFsUUJEQUQ0QWd3RHVRQ01BcjZJVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RHZSQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUxjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUF6OFFUQU1VQVF3QytBSU1BVlFBakFQY0FFd0NWQUVNQVBnQ0RBTzVBSXdCdkFBRUFoQUFCQUZZQUFRQVVBQUVBMXdBQkFDUUFBUUNXQUFFQVJRQUJBSGNBQVFDRUFBRUF4Z0FCQUJRQUFRQ1BpQUVBSkFBQkFQY0FBUUExQUFFQUx5SUJBSVFBQVFEK1FBRUFGQUFCQUxjQUFRQWtBQUVBdndBQkFFVUFBUUJuQUFFQWhBQUJBS1lBQVFBVUFBRUFUMFFCQUNRQUFRRG5BQUVBTlFBQkFEOFJBUUNFQUFFQVZnQUJBQlFBQVFEUEFBRUFKQUFCQUpZQUFRQkZBQUVBYndBQkFJUUFBUURHQUFFQUZBQUJBSjhBQVFBa0FBRUE3d0FCQURVQUFRQS9NZ0VBaEFBQkFQNUFBUUFVQUFFQXJ3QUJBQ1FBQVFEL1JBRUFSUUFCQUY4QUFRQ0VBQUVBcGdBQkFCUUFBUUIvQUFFQUpBQUJBTjhBQVFBMUFBRUFIeEVCQUNRQUFRQldBQUVBaFFBQkFMOEFBUUFVQUFFQTl3QUJBTVlBQVFCM0FBRUFKQUFCQVAvNEFRQkZBQUVBZndBQkFCUUFBUURmQUFFQXBnQUJBRDh4QVFBa0FBRUFMaUlCQUlVQUFRQzNBQUVBRkFBQkFPOUVBUUN1b2dFQVp3QUJBQ1FBQVFEL1VRRUFSUUFCQUpjQUFRQVVBQUVBendBQkFEWUFBUUEvSWdFQUpBQUJBRllBQVFDRkFBRUF2N0lCQUJRQUFRRHZRQUVBeGdBQkFHOEFBUUFrQUFFQS8zSUJBRVVBQVFDZkFBRUFGQUFCQU5jQUFRQ21BQUVBVDBRQkFDUUFBUUF1SWdFQWhRQUJBSytvQVFBVUFBRUE1d0FCQUs2aUFRQmZBQUVBSkFBQkFQOUVBUUJGQUFFQWo0Z0JBQlFBQVFDdnFnRUFOZ0FCQUI4UkFnRCsrQ1FBVmdBQ0FMWUFoUUQvWmdJQXpnQVVBQjRSQWdDV0FEVUFyNmdDQVBZQUpBQStNUUlBcGdCRkFMK3pBZ0Mrc2hRQS8vVUNBR1lBZmxGZlZBSUEvdklrQUM0aUFnQ3VJb1VBNzBRQ0FNWUFGQUQvOUFJQWRnQTFBSDlFQWdEZVFDUUFQaklDQUo0QVJRRFhBQUlBdm9nVUFQLzZBZ0JlRWY3eFQwUUNBUDc0SkFCV0FBSUF0Z0NGQU8vSUFnRE9BQlFBSGhFQ0FKWUFOUUNQaUFJQTlnQWtBRDR4QWdDbUFFVUEzMFFDQUw2eUZBRC9xQUlBWmdCK1VXOEFBZ0QrOGlRQUxpSUNBSzRpaFFEbkFBSUF4Z0FVQU8vaUFnQjJBRFVBZjNJQ0FONUFKQUErTWdJQW5nQkZBTCt4QWdDK2lCUUEvM01DQUY0Ui92RS9Nd0VBaEFBQkFPNGdBUURGQUFFQXo4UUJBRVFBQVFEL01nRUFGUUFCQUkrSUFRQ0VBQUVBWmdBQkFDVUFBUUN2QUFFQVJBQUJBTzhpQVFDbUFBRUFYd0FCQUlRQUFRQk9SQUVBeFFBQkFNL01BUUJFQUFFQTl3QUJBQlVBQVFCdkFBRUFoQUFCQUZZQUFRQWxBQUVBbndBQkFFUUFBUURmQUFFQS9qQUJBQzhpQVFDRUFBRUE3aUFCQU1VQUFRRFB5QUVBUkFBQkFQOFJBUUFWQUFFQWR3QUJBSVFBQVFCbUFBRUFKUUFCQUg4QUFRQkVBQUVBNXdBQkFLWUFBUUEzQUFFQWhBQUJBRTVFQVFERkFBRUF0d0FCQUVRQUFRQy9BQUVBRlFBQkFEOEFBUUNFQUFFQVZnQUJBQ1VBQVFDWEFBRUFSQUFCQU5jQUFRRCtNQUVBSHhFQ0FPNm9SQUNPaUFJQTFnREZBUC96QWdEKy9DVUFQZ0FDQUxZQVZRRGYyQUlBL3ZoRUFHWUFBZ0IrSUlVQS81a0NBT1lBOVFBMkFBSUFwZ0FWQUo4QUFnRCs4a1FBZGdBQ0FNNUV4UUQvZGdJQS92RWxBRTVFQWdDdUFGVUF6OGdDQVA3MFJBQmVSQUlBdmhDRkFPL2tBZ0RlVlBVQUhoRUNBSllBRlFBdklnSUE3cWhFQUk2SUFnRFdBTVVBLy9vQ0FQNzhKUUErQUFJQXRnQlZBTDhSQWdEKytFUUFaZ0FDQUg0Z2hRRHZJZ0lBNWdEMUFEWUFBZ0NtQUJVQWZ5SUNBUDd5UkFCMkFBSUF6a1RGQVAvVkFnRCs4U1VBVGtRQ0FLNEFWUUJ2QUFJQS92UkVBRjVFQWdDK0VJVUEzeEVDQU41VTlRQWVFUUlBbGdBVkFGOVJBd0QyQUJRQUhoRkVBSTZJcFFEZjFBTUFycUpWQVA5MkpBQStJcllBcjZvREFPWUFGQUQvOVVRQVpnQ0ZBTS9NQXdDZUFNVUE3MFFrQURZQS92aC9NUU1BN3VnVUFQL3hSQUIyQUtVQXo4UURBSDRpVlFEZjBTUUFUa1QrOUY5UkF3RFdBQlFBNytKRUFGNUVoUUMvSWdNQWxnREZBTi9JSkFBdUl2N3lieUlEQVBZQUZBQWVFVVFBam9pbEFMK3hBd0N1b2xVQS96TWtBRDRpdGdDdnFBTUE1Z0FVQVArNVJBQm1BSVVBdjZnREFKNEF4UUR2NUNRQU5nRCsrRzlrQXdEdTZCUUEvL3hFQUhZQXBRRFB5QU1BZmlKVkFPL3FKQUJPUlA3MGYzUURBTllBRkFELytrUUFYa1NGQUwreUF3Q1dBTVVBMzBRa0FDNGkvdkkvTWZNQS92cjk4VFlBQkFDK01uVUEzeEh6QU41VS9mTHY1TlVBZm5IKy9IOXo4d0QrOC8zNEhoRUVBSllBVlFDL3NmTUF6Z0MxQU4vWS9mUm1BUDY1WDFUekFQNTIvZkVtQUFRQXBnQjFBSjhBOHdDdUFQM3kvL2ZWQUVZQS92Vi9kUE1BNWdEOStCWUFCQUNHQUZVQWo0anpBTVlBdFFEdjR2MzBYaEh1cUQ4Ujh3RCsrdjN4TmdBRUFMNHlkUURmMGZNQTNsVDk4di83MVFCK2NmNzhmMFR6QVA3ei9mZ2VFUVFBbGdCVkFIOXk4d0RPQUxVQTd5TDk5R1lBL3JsUFJQTUEvbmI5OFNZQUJBQ21BSFVBdnhIekFLNEEvZkwvLzlVQVJnRCs5VDh5OHdEbUFQMzRGZ0FFQUlZQVZRQnZBUE1BeGdDMUFMKzQvZlJlRWU2b0x5SUFRZXloQVF1a0hnRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQkFBQUFBVUFBQUMzSVVJaFp5RkNJUkVSRVJFek16TXpkM2QzZHdBQUFBQUFBQUFBQVZZQUFBQUFBQUJRVVFBQVlGRUFBQUZXQUFBQkFBQUFZRkVBQUZCUkFBQUJOQUFBQUFBQUFIQlJBQUR3VVFBQUFUUUFBQUVBQUFDQVVRQUFBRklBQUFFWUFBQUFBQUFBa0ZFQUFGQlNBQUFCR0FBQUFRQUFBS0JSQUFCZ1VnQUF3UW9BQUFBQUFBQ3dVUUFBc0ZJQUFNRUtBQUFCQUFBQXdGRUFBTUJTQUFBaEJRQUFBQUFBQU5CUkFBRFFWQUFBSVFVQUFBRUFBQURnVVFBQTRGUUFBQ0VDQUFBQUFBQUE4RlVBQUZCVkFBQWhBZ0FBQVFBQUFBQldBQUJnVlFBQUFWWUFBQUFBQUFBUVVnQUFBRklBQUFGV0FBQUJBQUFBSUZJQUFQQlJBQUFCVkFBQUFBQUFBREJTQUFEd1VnQUFBVlFBQUFFQUFBQkFVZ0FBQUZNQUFBRklBQUFBQUFBQVVGSUFBUEJTQUFBQlNBQUFBUUFBQUdCU0FBQUFVd0FBQVRnQUFBQUFBQUJ3VWdBQThGSUFBQUU0QUFBQkFBQUFnRklBQUFCVEFBQUJNQUFBQUFBQUFKQlNBQUJRVXdBQUFUQUFBQUVBQUFDZ1VnQUFZRk1BQUFFa0FBQUFBQUFBc0ZJQUFIQlRBQUFCSkFBQUFRQUFBTUJTQUFDQVV3QUFBUndBQUFBQUFBRFFVZ0FBc0ZNQUFBRWNBQUFCQUFBQTRGSUFBTUJUQUFBQkZnQUFBQUFBQU5CVUFBRFFVd0FBQVJZQUFBRUFBQURnVkFBQTRGTUFBQUZXQUFBQUFBQUFFRk1BQUFCVEFBQUJWZ0FBQVFBQUFDQlRBQUR3VWdBQUFWUUFBQUFBQUFBd1V3QUE4RklBQUFGVUFBQUJBQUFBUUZNQUFBQlRBQUFCVVFBQUFBQUFBRkJUQUFBUVV3QUFBVkVBQUFFQUFBQmdVd0FBSUZNQUFBRklBQUFBQUFBQWNGTUFBREJUQUFBQlNBQUFBUUFBQUlCVEFBQkFVd0FBQVRnQUFBQUFBQUNRVXdBQVVGTUFBQUU0QUFBQkFBQUFvRk1BQUdCVEFBQUJOQUFBQUFBQUFMQlRBQUJ3VXdBQUFUUUFBQUVBQUFEQVV3QUFnRk1BQUFFd0FBQUFBQUFBMEZNQUFKQlRBQUFCTUFBQUFRQUFBT0JUQUFDZ1V3QUFBU2dBQUFBQUFBRHdVd0FBa0ZNQUFBRW9BQUFCQUFBQUFGUUFBS0JUQUFBQkpBQUFBQUFBQUJCVUFBQ3dVd0FBQVNRQUFBRUFBQUFnVkFBQXdGTUFBQUVpQUFBQUFBQUFNRlFBQU5CVEFBQUJJZ0FBQVFBQUFFQlVBQURnVXdBQUFSd0FBQUFBQUFCUVZBQUE4Rk1BQUFFY0FBQUJBQUFBWUZRQUFBQlVBQUFCR0FBQUFBQUFBSEJVQUFBUVZBQUFBUmdBQUFFQUFBQ0FWQUFBSUZRQUFBRVdBQUFBQUFBQWtGUUFBREJVQUFBQkZnQUFBUUFBQUtCVUFBQkFWQUFBQVJRQUFBQUFBQUN3VkFBQVVGUUFBQUVVQUFBQkFBQUF3RlFBQUdCVUFBQUJFZ0FBQUFBQUFOQlVBQUJ3VkFBQUFSSUFBQUVBQUFEZ1ZBQUFnRlFBQUFFUkFBQUFBQUFBOEZRQUFKQlVBQUFCRVFBQUFRQUFBQUJWQUFDZ1ZBQUF3UW9BQUFBQUFBQVFWUUFBc0ZRQUFNRUtBQUFCQUFBQUlGVUFBTUJVQUFEQkNRQUFBQUFBQURCVkFBRFFWQUFBd1FrQUFBRUFBQUJBVlFBQTRGUUFBS0VJQUFBQUFBQUFVRlVBQVBCVUFBQ2hDQUFBQVFBQUFHQlZBQUFBVlFBQUlRVUFBQUFBQUFCd1ZRQUFFRlVBQUNFRkFBQUJBQUFBZ0ZVQUFDQlZBQUJCQkFBQUFBQUFBSkJWQUFBd1ZRQUFRUVFBQUFFQUFBQ2dWUUFBUUZVQUFLRUNBQUFBQUFBQXNGVUFBRkJWQUFDaEFnQUFBUUFBQU1CVkFBQmdWUUFBSVFJQUFBQUFBQURRVlFBQWNGVUFBQ0VDQUFBQkFBQUE0RlVBQUlCVkFBQkJBUUFBQUFBQUFQQlZBQUNRVlFBQVFRRUFBQUVBQUFBQVZnQUFvRlVBQUJFQkFBQUFBQUFBRUZZQUFMQlZBQUFSQVFBQUFRQUFBQ0JXQUFEQVZRQUFoUUFBQUFBQUFBQXdWZ0FBMEZVQUFJVUFBQUFCQUFBQVFGWUFBT0JWQUFCSkFBQUFBQUFBQUZCV0FBRHdWUUFBU1FBQUFBRUFBQUJnVmdBQUFGWUFBQ1VBQUFBQUFBQUFjRllBQUJCV0FBQWxBQUFBQVFBQUFJQldBQUFnVmdBQUZRQUFBQUFBQUFDUVZnQUFNRllBQUJVQUFBQUJBQUFBb0ZZQUFFQldBQUFKQUFBQUFBQUFBTEJXQUFCUVZnQUFDUUFBQUFFQUFBREFWZ0FBWUZZQUFBVUFBQUFBQUFBQTBGWUFBSEJXQUFBRkFBQUFBUUFBQU9CV0FBQ0FWZ0FBQVFBQUFBQUFBQURRVmdBQWtGWUFBQUVBQUFBQkFBQUE0RllBQUtCV0FBQUJWZ0FBQUFBQUFQQldBQUR3VmdBQUFWWUFBQUVBQUFBQVZ3QUFBRmNBQUFBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd0FCQlFZQkFnWUdBd01IQndNREJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEF3TUhCd01EQndjRUJBY0hCQVFIQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NCQWdZR0FnSUdCZ01EQndjREF3Y0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQlFZSUNBWUdDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FZR0NBZ0dCZ2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBRUNCZ1lDQWdZR0F3TUhCd01EQndjQkFnWUdBZ0lHQmdNREJ3Y0RBd2NIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEFnSUdCZ0lDQmdZREF3Y0hBd01IQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBWUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdBQVFNREFRSURBd1VHQndjR0JnY0hBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3VUdCd2NHQmdjSENBZ0lDQWdJQ0FnRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQVFJREF3SUNBd01HQmdjSEJnWUhCd0VDQXdNQ0FnTURCZ1lIQndZR0J3Y0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUFRSURBd0lDQXdNR0JnY0hCZ1lIQndFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBSUNBd01DQWdNREJnWUhCd1lHQndjQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUFEQVFRREJnUUhBUVFDQlFRSEJRY0FBd0VFQXdZRUJ3RUVBZ1VFQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndFRUFnVUVCd1VIQWdVQ0JRVUhCUWNEQmdRSEJnZ0hDQVFIQlFjSENBY0lBd1lFQndZSUJ3Z0VCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0VFQWdVRUJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dFQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQXdZRUJ3WUlCd2dFQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0VCd1VIQndnSENBVUhCUWNIQ0FjSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FZSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lDUWtLQ2drSkNnb01EQTBMREF3TkN3a0pDZ29KQ1FvS0RBd0xEUXdNQ3cwTURBME5EQXdMQ3d3SkRRb0pEQW9MREF3TEN3d01EUTBNQ1FzS0NRd0tEUWtKQ2dvSkNRb0tEQXdOQ3d3TURRc0pDUW9LQ1FrS0Nnd01DdzBNREFzTkRBd05EUXdNQ3dzTUNRMEtDUXdLQ3d3TUN3c01EQTBOREFrTENna01DZzBLQ2dvS0Nnb0tDZzBMRFFzTkN3MExDZ29KQ1FvS0NRa05Dd3dNRFFzTURBME5EUTBMQ3dzTERRb05DZ29MQ2dzTkRRd01Dd3NNREEwS0RBa0tDd2tNQ2dvSkNRb0tDUWtMRFF3TUN3ME1EQW9LQ2dvS0Nnb0tDdzBMRFFzTkN3MExDd3dNRFEwTURBc0tEQWtLRFFrTUN3c0xDdzBORFEwTENnc0tDZzBLRFFCQm1jQUJDemNCQUFFQUFRQUJBQUFCQVFBQUFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBQUFBQUFCQUFFQUFBQUFBUUVCQVFBQUFBRUFBUUVCQUVIWndBRUxOd0VBQVFBQkFBRUFBQUVCQUFBQkFRQUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFRQUJBUUVBUVpuQkFRc0hBUUFCQUFFQUFRQkJxY0VCQzVVQ0FRQUJBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVBQUFBQUFRRUJBUUFBQUFBQUFRQUJBUUVBQUFFQkFBQUFBUUFCQUFFQUFRRUJBUUVCQVFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQkFBQUJBUUFCQUFBQUFBRUJBUUVBQVFBQkFRRUJBUUlBQUFBRUFBQUFCQUFBQUFnQUFBQ1Evd0FBREFBQUFCa0FBQUJTL3dBQUZBQUFBQm9BQUFCVC93QUFGQUFBQUJzQUFBQmUvd0FBRkFBQUFCd0FBQUJjL3dBQUZBQUFBQjBBQUFCZC93QUFGQUFBQUI0QUFBQmYvd0FBRkFBQUFCOEFBQUJSL3dBQUFnQUFBQ0FBQUFCVi93QUFCQUFBQUNFQUFBQlgvd0FBQkFBQUFDSUFBQUJZL3dBQUVBQUFBQ01BQUFCZy93QUFCQUFBQUNRQUFBQmgvd0FBRUFBQUFDVUFBQUNSL3dCQnlNTUJDMlZqL3dBQUJBQUFBQ1lBQUFCay93QUFGQUFBQUNjQUFBQjAvd0FBRkFBQUFDZ0FBQUI0L3dBQUJBQUFBQ2tBQUFCUS93QUFCQUFBQUNvQUFBQlovd0FBQkFBQUFDc0FBQUIxL3dBQUZBQUFBQ3dBQUFCMy93QUFGQUFBQUMwQUFBQUFBQUFBRkFCQndNUUJDelV1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFDQWdVR28zQUFBQWNIbDBaamdBQUFCb01uQnFPUUJCZ01VQkN6SnlaR2hwT2dBQUFISnNiMk03QUFBQVkyTndZandBQUFCeWJHTndQUUFBQUhCaGJXTStBQUFBWm1Wa1l6OEFBQUJBWmdCQndNVUJDMEVaQUFzQUdSa1pBQUFBQUFVQUFBQUFBQUFKQUFBQUFBc0FBQUFBQUFBQUFCa0FDZ29aR1JrRENnY0FBUUFKQ3hnQUFBa0dDd0FBQ3dBR0dRQUFBQmtaR1FCQmtjWUJDeUVPQUFBQUFBQUFBQUFaQUFzTkdSa1pBQTBBQUFJQUNRNEFBQUFKQUE0QUFBNEFRY3ZHQVFzQkRBQkIxOFlCQ3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWVhIQVFzQkVBQkJrY2NCQ3hVUEFBQUFCQThBQUFBQUNSQUFBQUFBQUJBQUFCQUFRYi9IQVFzQkVnQkJ5OGNCQ3g0UkFBQUFBQkVBQUFBQUNSSUFBQUFBQUJJQUFCSUFBQm9BQUFBYUdob0FRWUxJQVFzT0dnQUFBQm9hR2dBQUFBQUFBQWtBUWJQSUFRc0JGQUJCdjhnQkN4VVhBQUFBQUJjQUFBQUFDUlFBQUFBQUFCUUFBQlFBUWUzSUFRc0JGZ0JCK2NnQkMyUVZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVlBQUFBQWNBQUFBSEFBQUFCeEFBQUFjUUFBQUhFQUFBQnhBQUFBY1FBQUFIRUFBQUJ3QUFBQWNBQUFBSEVBQUFCd0FBQUFjQUFBQUhBQUFBQndBRUdBeWdFTEhYRUFBQUJ4QUFBQWNBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQnhBRUdveXdFTENWQndBUUFBQUFBQUJRQkJ2TXNCQ3dGckFFSFV5d0VMQ213QUFBQnRBQUFBdUdzQVFlekxBUXNCQWdCQi9Nc0JDd2ovLy8vLy8vLy8vd0JCd013QkN3RUZBRUhNekFFTEFXNEFRZVRNQVFzT2JBQUFBRzhBQUFESWF3QUFBQVFBUWZ6TUFRc0JBUUJCak0wQkN3WC8vLy8vQ2c9PSI7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW50aWF0ZVN5bmMoZCxlKVswXSl9KCksSD0oTC51LGEuX21hbGxvYz1MLnYsYS5fZnJlZT1MLncsYS5fanAyX2RlY29kZT1MLnksTC56KTtiPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe1N8fHJ1bigpO1N8fChiPXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEoeT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGYudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTtpZighKHk+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKCk9PntzZXRUaW1lb3V0KCgoKT0+YS5zZXRTdGF0dXMoIiIpKSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7aWYoIVMpe1M9ITA7YS5jYWxsZWRSdW49ITA7aWYoIXUpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2NhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpO3QoYSk7YS5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihhLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2Zvcig7YS5wb3N0UnVuLmxlbmd0aDspZT1hLnBvc3RSdW4uc2hpZnQoKSxtLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MobSl9KCl9fX19aWYoYS5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTtmb3IoO2EucHJlSW5pdC5sZW5ndGg+MDspYS5wcmVJbml0LnBvcCgpKCl9cnVuKCk7cmV0dXJuIGF9KTtjb25zdCByaT1haTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNiPW51bGw7c3RhdGljIGRlY29kZShlLHQpe3R8fD17fTt0aGlzLiNifHw9cmkoe3dhcm59KTtjb25zdCBpPXRoaXMuI2IuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI2I9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlKX1kZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1KcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscj17ZWFybHlDaGFuZ2U6aSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtyLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtyLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1yfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxpPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9aT1pPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9aTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGk+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsaSxhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IG49ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxnPXIuZGljdGlvbmFyeUxlbmd0aHMsYz1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGw9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCBDPXIuY3VycmVudFNlcXVlbmNlO2xldCBRPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLEU9MCx1PXRoaXMuYnVmZmVyTGVuZ3RoLGQ9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhsKSxyPVE+MDtpZihlPDI1Nil7Q1swXT1lO1E9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7bD05O249MjU4O1E9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPG4pe1E9Z1tlXTtmb3IodD1RLTEsaT1lO3Q+PTA7dC0tKXtDW3RdPW9baV07aT1jW2ldfX1lbHNlIENbUSsrXT1DWzBdfWlmKHIpe2Nbbl09aDtnW25dPWdbaF0rMTtvW25dPUNbMF07bisrO2w9bitzJm4rcy0xP2w6MHxNYXRoLm1pbihNYXRoLmxvZyhuK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtFKz1RO2lmKGE8RSl7ZG97YSs9NTEyfXdoaWxlKGE8RSk7ZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8UTt0KyspZFt1KytdPUNbdF19ci5uZXh0Q29kZT1uO3IuY29kZUxlbmd0aD1sO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1RO3RoaXMuYnVmZmVyTGVuZ3RoPXV9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1pLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPWkuZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1pLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dGhpcy5jb2x1bW5zPWkuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPW4qcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgbixvPTAsZz0wLGM9MCxsPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3Iobj0wO248ZTsrK24pe2xldCBlPXNbbl1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2lbaCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihuPTA7bjxyOysrbilpW2grK109c1tuXTtmb3IoO248ZTsrK24pe2lbaF09aVtoLXJdK3Nbbl07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKG49MDtuPHQ7KytuKWlbaCsrXT1zW25dO2Zvcig7bjxlO24rPTIpe2NvbnN0IGU9KCgyNTUmc1tuXSk8PDgpKygyNTUmc1tuKzFdKSsoKDI1NSZpW2gtdF0pPDw4KSsoMjU1JmlbaC10KzFdKTtpW2grK109ZT4+OCYyNTU7aVtoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCBDPTAsUT10O2NvbnN0IEU9dGhpcy5jb2x1bW5zO2ZvcihuPTA7bjxFOysrbilmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihjPGEpe289bzw8OHwyNTUmc1tDKytdO2MrPTh9ZVt0XT1lW3RdKyhvPj5jLWEpJmg7Yy09YTtnPWc8PGF8ZVt0XTtsKz1hO2lmKGw+PTgpe2lbUSsrXT1nPj5sLTgmMjU1O2wtPTh9fWw+MCYmKGlbUSsrXT0oZzw8OC1sKSsobyYoMTw8OC1sKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxpPXRoaXMuc3RyLmdldEJ5dGUoKSxhPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IG49cy5zdWJhcnJheShyLWUscik7MD09PW4ubGVuZ3RoJiYobj1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sZyxjLGw9cjtzd2l0Y2goaSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW2wrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbbCsrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tsXT1zW2wtdF0rYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tsKytdPW5bb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW2wrK109KG5bb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW2xdPShuW29dK3NbbC10XT4+MSkrYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2c9bltvXTtjPWFbb107c1tsKytdPWcrY31mb3IoO288ZTsrK28pe2c9bltvXTtjb25zdCBlPW5bby10XSxpPXNbbC10XSxyPWkrZy1lO2xldCBoPXItaTtoPDAmJihoPS1oKTtsZXQgQz1yLWc7QzwwJiYoQz0tQyk7bGV0IFE9ci1lO1E8MCYmKFE9LVEpO2M9YVtvXTtzW2wrK109aDw9QyYmaDw9UT9pK2M6Qzw9UT9nK2M6ZStjfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7aX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7dFtpKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKGEpO3Quc2V0KGUsaSk7aSs9YX19ZWxzZXthPTI1Ny1hO2NvbnN0IHI9ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXRbaSsrXT1yfXRoaXMuYnVmZmVyTGVuZ3RoPWl9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmk9ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9aTt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBpPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1FdDspaS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1FdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGk7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gaTtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1FdDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PUV0KWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PUV0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGk9ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBpPWUucGVla0J5dGVzKDE1KSxuPWkubGVuZ3RoO2lmKDA9PT1uKWJyZWFrO2ZvcihsZXQgZT0wO2U8bjtlKyspe2E9aVtlXTtpZigoMCE9PWF8fDA9PT1pW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpLnNsaWNlKCkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBnPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PUV0KXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgaT10W2UuY21kXTtpZighaSl7cz0wO2JyZWFrfWlmKGkudmFyaWFibGVBcmdzP2c8PWkubnVtQXJnczpnPT09aS5udW1BcmdzKWJyZWFrO2c9MH1lbHNlIGcrK31pZigyPT09cylicmVha31lbHNlIHM9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihyKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXIpKX19bGV0IG49NDtlLnNraXAoLW4pO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChuKTtpc1doaXRlU3BhY2UoYSl8fG4tLTtyZXR1cm4gZS5wb3Mtbi1pfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaSxhLHI9ITE7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09aSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpyPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihyKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWkpe2NvbnN0IHQ9ZS5wb3M7aT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoaSk7KXtlLnNraXAoKTtpPWUucGVla0J5dGUoKX1pZig2Mj09PWkpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1pOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGk9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09aSlpPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09aSlpPTczPT09dD8yOjA7ZWxzZSBpZigyPT09aSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGk9dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09RXQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09RXQpYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHI9aS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEuRnx8YS5GaWx0ZXIpO2xldCBuO2lmKHMgaW5zdGFuY2VvZiBOYW1lKW49cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihzWzBdKTtlIGluc3RhbmNlb2YgTmFtZSYmKG49ZS5uYW1lKX1jb25zdCBvPWkucG9zO2xldCBnLGM7c3dpdGNoKG4pe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zz10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zz10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zz10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGc8MWUzJiZyPjApe2NvbnN0IGU9aS5wb3M7aS5wb3M9dC5iZWdpbklubGluZUltYWdlUG9zO2M9ZnVuY3Rpb24gZ2V0SW5saW5lSW1hZ2VDYWNoZUtleShlKXtjb25zdCB0PVtdLGk9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8aS0xOyl0LnB1c2goZVthKytdPDw4fGVbYSsrXSk7YTxpJiZ0LnB1c2goZVthXSk7cmV0dXJuIGkrIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KX0oaS5nZXRCeXRlcyhyK2cpKTtpLnBvcz1lO2NvbnN0IGE9dGhpcy5pbWFnZUNhY2hlW2NdO2lmKHZvaWQgMCE9PWEpe3RoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTthLnJlc2V0KCk7cmV0dXJuIGF9fWNvbnN0IGw9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBhKWwuc2V0KGUsYVtlXSk7bGV0IGg9aS5tYWtlU3ViU3RyZWFtKG8sZyxsKTtlJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGcpKTtoPXRoaXMuZmlsdGVyKGgsbCxnKTtoLmRpY3Q9bDtpZih2b2lkIDAhPT1jKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbY109aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I0QoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBpPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9aS5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3Qgbj10LnBlZWtCeXRlcygyMDQ4KSxvPW4ubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgZz0wO2Zvcig7ZzxvOyl7bGV0IG89MDtmb3IoO288YSYmbltnK29dPT09aVtvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmbltnK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UobltnK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5pLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9ZztyZXR1cm4gdC5wb3MtZX19ZysrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBpPXRoaXMubGV4ZXI7bGV0IGE9aS5zdHJlYW07aS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7aS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI0Qocik7aWYoczwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtpLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocixzLGUpO3QmJihhPXQuY3JlYXRlU3RyZWFtKGEscykpO2E9dGhpcy5maWx0ZXIoYSxlLHMpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsaSl7bGV0IGE9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYoYSBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUsaSxyKX1sZXQgcz1pO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YSxpPXI7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87KytuKXthPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbbl0pO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke2F9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGkpJiZuIGluIGkmJihyPXRoaXMueHJlZi5mZXRjaElmUmVmKGlbbl0pKTtlPXRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxzLHIpO3M9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsaSxhKXtpZigwPT09aSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGkpLGksYSk6bmV3IEZsYXRlU3RyZWFtKGUsaSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGksdCksaSxhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGksdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxpLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxpLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiBuZXcgQXNjaWk4NVN0cmVhbShlLGkpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKGUsaSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgQ0NJVFRGYXhTdHJlYW0oZSxpLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4gbmV3IFJ1bkxlbmd0aFN0cmVhbShlLGkpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgSmJpZzJTdHJlYW0oZSxpLGEpfXdhcm4oYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJbnZhbGlkIHN0cmVhbTogIiR7ZX0iYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfX19Y29uc3Qgc2k9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxpPTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7aT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCByPWUtNDgscz0wLG49MTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7Y29uc3QgYT1lLTQ4O2lmKHQpcz0xMCpzK2E7ZWxzZXswIT09aSYmKGkqPTEwKTtyPTEwKnIrYX19ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1pKWJyZWFrO2k9MX1lbHNlIGlmKDQ1PT09ZSl3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztlPXRoaXMucGVla0NoYXIoKTtpZig0Mz09PWV8fDQ1PT09ZSl7bj00NT09PWU/LTE6MTt0aGlzLm5leHRDaGFyKCl9ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9MCE9PWkmJihyLz1pKTt0JiYocio9MTAqKihuKnMpKTtyZXR1cm4gYSpyfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2kucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGkucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDppLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6aS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmkucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmkucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjppLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3I9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtyPSExO2U9KGU8PDMpKygxNSZhKX19aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7cnx8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gaS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhc2lbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoc2lbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7aS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHI9dG9IZXhEaWdpdChlKTtpZigtMT09PXIpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHNpW2VdKWJyZWFrO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHIpKX1lbHNlIGkucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7aS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7aS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGkuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fHdhcm4oYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6d2FybigiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0PXRoaXMuY3VycmVudENoYXIsaT0tMSxhPS0xO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKHQ8MCl7d2FybigiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09c2lbdF0pe2E9dG9IZXhEaWdpdCh0KTtpZigtMT09PWEpdGhpcy5faGV4U3RyaW5nV2Fybih0KTtlbHNlIGlmKC0xPT09aSlpPWE7ZWxzZXtlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0fGEpKTtpPS0xfXQ9dGhpcy5uZXh0Q2hhcigpfWVsc2UgdD10aGlzLm5leHRDaGFyKCl9LTEhPT1pJiZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0KSk7cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1zaVt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiXSIpO2Nhc2UgNjA6dD10aGlzLm5leHRDaGFyKCk7aWYoNjA9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPj4iKX1yZXR1cm4gQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgSWxsZWdhbCBjaGFyYWN0ZXI6ICR7dH1gKX1sZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoaSl9fWNvbnN0IGE9dGhpcy5rbm93bkNvbW1hbmRzO2xldCByPXZvaWQgMCE9PWE/LltpXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFzaVt0XTspe2NvbnN0IGU9aStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHImJnZvaWQgMD09PWFbZV0pYnJlYWs7aWYoMTI4PT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2kubGVuZ3RofWApO2k9ZTtyPXZvaWQgMCE9PWE/LltpXX1pZigidHJ1ZSI9PT1pKXJldHVybiEwO2lmKCJmYWxzZSI9PT1pKXJldHVybiExO2lmKCJudWxsIj09PWkpcmV0dXJuIG51bGw7IkJJIj09PWkmJih0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9dGhpcy5zdHJlYW0ucG9zKTtyZXR1cm4gQ21kLmdldChpKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0LGk9ITEpe2NvbnN0IGE9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmKGk/YT49MDphPjApKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGk9dC5nZXRPYmooKSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbixvO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmaXNDbWQociwib2JqIikmJnMgaW5zdGFuY2VvZiBEaWN0JiYibnVtYmVyIj09dHlwZW9mKG49cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm4+MCkpcmV0dXJuIG51bGw7aWYoKG89Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpvLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgaTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShpPXQubGVuZ3RoKXx8ND09PWkpKXtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBpPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fWNvbnN0IG5pPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sb2k9MioqMjQtMTtjbGFzcyBDTWFwe2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxpKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxpKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBDaWRSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IoO2U8PXQ7KXRoaXMuX21hcFtlKytdPWkrK31tYXBCZlJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1pO2NvbnN0IHQ9aS5jaGFyQ29kZUF0KGEpKzE7dD4yNTU/aT1pLnN1YnN0cmluZygwLGEtMSkrU3RyaW5nLmZyb21DaGFyQ29kZShpLmNoYXJDb2RlQXQoYS0xKSsxKSsiXDAiOmk9aS5zdWJzdHJpbmcoMCxhKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7aWYodC1lPm9pKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aDtsZXQgcj0wO2Zvcig7ZTw9dCYmcjxhOyl7dGhpcy5fbWFwW2VdPWlbcisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxpPXQubGVuZ3RoO2lmKGk8PTY1NTM2KWZvcihsZXQgYT0wO2E8aTthKyspdm9pZCAwIT09dFthXSYmZShhLHRbYV0pO2Vsc2UgZm9yKGNvbnN0IGkgaW4gdCllKGksdFtpXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGkpe2xldCBhPTA7Y29uc3Qgcj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspe2E9KGE8PDh8ZS5jaGFyQ29kZUF0KHQrcykpPj4+MDtjb25zdCBuPXJbc107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7KXtjb25zdCB0PW5bZSsrXSxyPW5bZSsrXTtpZihhPj10JiZhPD1yKXtpLmNoYXJjb2RlPWE7aS5sZW5ndGg9cysxO3JldHVybn19fWkuY2hhcmNvZGU9MDtpLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7KXtjb25zdCByPWFbdCsrXSxzPWFbdCsrXTtpZihlPj1yJiZlPD1zKXJldHVybiBpKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihpKXx8InN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoaSk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTppO2UubWFwQmZSYW5nZShhLHIsdCl9ZWxzZXtpZighaXNDbWQoaSwiWyIpKWJyZWFrO3tpPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyFpc0NtZChpLCJdIikmJmkhPT1FdDspe3MucHVzaChpKTtpPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShhLHIscyl9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PUV0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcENpZFJhbmdlKGEscixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCByPXN0clRvSW50KGkpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoaS5sZW5ndGgsYSxyKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihpKSYmKGUudmVydGljYWw9ISFpKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO2kgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWkubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxpLGEpe2xldCByLHM7QTpmb3IoOzspdHJ5e2NvbnN0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1pLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1pLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtyPWl9ZWxzZSBpZihpIGluc3RhbmNlb2YgQ21kKXN3aXRjaChpLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBBO2Nhc2UidXNlY21hcCI6ciBpbnN0YW5jZW9mIE5hbWUmJihzPXIubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hYSYmcyYmKGE9cyk7cmV0dXJuIGE/ZXh0ZW5kQ01hcChlLGksYSk6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxpKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoaSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllLmNvZGVzcGFjZVJhbmdlc1tpXT10W2ldLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFuaS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6aSxpc0NvbXByZXNzZWQ6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhpLHIsKGU9PmV4dGVuZENNYXAocix0LGUpKSk7Y29uc3Qgcz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpKSk7cmV0dXJuIHBhcnNlQ01hcChyLHMsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOml9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBhPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxpKTtyZXR1cm4gYS5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChhLm5hbWUsdCk6YX10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE3OTUpO2NvbnN0IGdpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sSWk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sY2k9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sbGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxoaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLENpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sQmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLFFpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxFaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHVpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gUWk7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gQmk7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gQ2k7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIEVpO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB1aTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gbGk7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGRpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdLGZpPTM5MSxwaT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxtaT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWl9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBpPXRoaXMucGFyc2VIZWFkZXIoKSxhPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChyLm9iai5nZXQoMCkpLGc9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWkub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChhLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChzLm9iaik7dC50b3BEaWN0PWc7dC5nbG9iYWxTdWJySW5kZXg9bi5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Zy5oYXNOYW1lKCJST1MiKTtjb25zdCBjPWcuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGw9dGhpcy5wYXJzZUluZGV4KGMpLm9iaixoPWcuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtjb25zdCBDPWcuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKEMpe2UuYXNjZW50PU1hdGgubWF4KENbM10sQ1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKENbMV0sQ1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IFEsRTtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoZy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9RT1udWxsO1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksbC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGcuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGwuY291bnQpfWVsc2V7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxsLmNvdW50LHQuc3RyaW5ncywhMSk7RT10aGlzLnBhcnNlRW5jb2RpbmcoZy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsUS5jaGFyc2V0KX10LmNoYXJzZXQ9UTt0LmVuY29kaW5nPUU7Y29uc3QgdT10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmwsbG9jYWxTdWJySW5kZXg6Zy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpuLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmcucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXUuY2hhclN0cmluZ3M7dC5zZWFjcz11LnNlYWNzO3Qud2lkdGhzPXUud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJjEhPT1lW2ldOykrK2k7aWYoaT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1pKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGkpO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxuPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLG4pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgaT1lW3QrK107aWYoMzA9PT1pKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBpPSIiO2NvbnN0IGE9MTUscj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scz1lLmxlbmd0aDtmb3IoO3Q8czspe2NvbnN0IHM9ZVt0KytdLG49cz4+NCxvPTE1JnM7aWYobj09PWEpYnJlYWs7aSs9cltuXTtpZihvPT09YSlicmVhaztpKz1yW29dfXJldHVybiBwYXJzZUZsb2F0KGkpfSgpO2lmKDI4PT09aSl7aT1lW3QrK107aT0oaTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBpfWlmKDI5PT09aSl7aT1lW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107cmV0dXJuIGl9aWYoaT49MzImJmk8PTI0NilyZXR1cm4gaS0xMzk7aWYoaT49MjQ3JiZpPD0yNTApcmV0dXJuIDI1NiooaS0yNDcpK2VbdCsrXSsxMDg7aWYoaT49MjUxJiZpPD0yNTQpcmV0dXJuLTI1NiooaS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicraSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgaT1bXTtjb25zdCBhPVtdO3Q9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7YS5wdXNoKFtyLGldKTtpPVtdOysrdH1lbHNlIGkucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIGF9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxpPXRoaXMuYnl0ZXMsYT1pW2UrK108PDh8aVtlKytdLHI9W107bGV0IHMsbixvPWU7aWYoMCE9PWEpe2NvbnN0IHQ9aVtlKytdLGc9ZSsoYSsxKSp0LTE7Zm9yKHM9MCxuPWErMTtzPG47KytzKXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDsrK3Ipe2E8PD04O2ErPWlbZSsrXX1yLnB1c2goZythKX1vPXJbYV19Zm9yKHM9MCxuPXIubGVuZ3RoLTE7czxuOysrcyl7Y29uc3QgZT1yW3NdLGE9cltzKzFdO3QuYWRkKGkuc3ViYXJyYXkoZSxhKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QucHVzaChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgZShpKTtmb3IoY29uc3RbZSxpXW9mIHQpYS5zZXRCeUtleShlLGkpO3JldHVybiBhfXBhcnNlQ2hhclN0cmluZyhlLHQsaSxhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjspe2NvbnN0IGc9dFtvKytdO2xldCBjPW51bGw7aWYoMTI9PT1nKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7cj0wfWVsc2UgYz1taVtlXX1lbHNlIGlmKDI4PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNik+PjE2O28rPTI7cisrfWVsc2UgaWYoMTQ9PT1nKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UocixyKzQpO3JldHVybiExfX1jPXBpW2ddfWVsc2UgaWYoZz49MzImJmc8PTI0Nil7c1tyXT1nLTEzOTtyKyt9ZWxzZSBpZihnPj0yNDcmJmc8PTI1NCl7c1tyXT1nPDI1MT8oZy0yNDc8PDgpK3Rbb10rMTA4Oi0oZy0yNTE8PDgpLXRbb10tMTA4O28rKztyKyt9ZWxzZSBpZigyNTU9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7cisrfWVsc2UgaWYoMTk9PT1nfHwyMD09PWcpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztyJT0yO2M9cGlbZ119ZWxzZXtpZigxMD09PWd8fDI5PT09Zyl7Y29uc3QgdD0xMD09PWc/aTphO2lmKCF0KXtjPXBpW2ddO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgbj0zMjc2ODt0LmNvdW50PDEyNDA/bj0xMDc6dC5jb3VudDwzMzkwMCYmKG49MTEzMSk7Y29uc3Qgbz1zWy0tcl0rbjtpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPXBpW2ddO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxpLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWcpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWcmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2M9cGlbMTRdfWVsc2V7aWYoOT09PWcpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfWM9cGlbZ119fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Z3x8MjM9PT1nKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Z3x8MTg9PT1nKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1nPzM6MjN9fWlmKCJtaW4iaW4gYyYmIWUudW5kZWZTdGFjayYmcjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1zW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihzLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlIGlmKGMuc3RhY2tDbGVhcmluZylyPTA7ZWxzZSBpZihjLnJlc2V0U3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihjLnVuZGVmU3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1uPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbik7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmksZmRTZWxlY3Q6YSxmZEFycmF5OnIscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG49W10sbz1bXSxnPWUuY291bnQ7Zm9yKGxldCBjPTA7YzxnO2MrKyl7Y29uc3QgZz1lLmdldChjKSxsPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsQz1udWxsLFE9cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoYyk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7UT1yW2VdLnByaXZhdGVEaWN0O0M9US5zdWJyc0luZGV4fX1lbHNlIHQmJihDPXQpO2gmJihoPXRoaXMucGFyc2VDaGFyU3RyaW5nKGwsZyxDLGkpKTtpZihudWxsIT09bC53aWR0aCl7Y29uc3QgZT1RLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bY109ZStsLndpZHRofWVsc2V7Y29uc3QgZT1RLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bY109ZX1udWxsIT09bC5zZWFjJiYobltjXT1sLnNlYWMpO2h8fGUuc2V0KGMsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm4sd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGk9dFswXSxhPXRbMV07aWYoMD09PWl8fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHI9YStpLHM9dGhpcy5ieXRlcy5zdWJhcnJheShhLHIpLG49dGhpcy5wYXJzZURpY3Qocyksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsbixlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgZz1vLmdldEJ5TmFtZSgiU3VicnMiKSxjPWErZztpZigwPT09Z3x8Yz49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgbD10aGlzLnBhcnNlSW5kZXgoYyk7by5zdWJyc0luZGV4PWwub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGksYSl7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLklTT19BRE9CRSxnaSk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVCxJaSk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVF9TVUJTRVQsY2kpO2NvbnN0IHI9dGhpcy5ieXRlcyxzPWUsbj1yW2UrK10sbz1bYT8wOiIubm90ZGVmIl07bGV0IGcsYyxsO3QtPTE7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobD0wO2w8dDtsKyspe2c9cltlKytdPDw4fHJbZSsrXTtvLnB1c2goYT9nOmkuZ2V0KGcpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTtmb3IobD0wO2w8PWM7bCsrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTw8OHxyW2UrK107Zm9yKGw9MDtsPD1jO2wrKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCBoPWUsQz1yLnN1YmFycmF5KHMsaCk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLG4sbyxDKX1wYXJzZUVuY29kaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPXRoaXMuYnl0ZXM7bGV0IG4sbyxnLGM9ITEsbD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7Yz0hMDtuPWU7Y29uc3QgdD1lP2xpOkJpO2ZvcihvPTAsZz1hLmxlbmd0aDtvPGc7bysrKXtjb25zdCBlPXQuaW5kZXhPZihhW29dKTstMSE9PWUmJihyW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtuPXNbZSsrXTtzd2l0Y2goMTI3Jm4pe2Nhc2UgMDpjb25zdCB0PXNbZSsrXTtmb3Iobz0xO288PXQ7bysrKXJbc1tlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBpPXNbZSsrXTtsZXQgYT0xO2ZvcihvPTA7bzxpO28rKyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCtpO2UrKylyW2VdPWErK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7bn0gaW4gQ0ZGYCl9Y29uc3QgZz1lO2lmKDEyOCZuKXtzW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1zW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PXNbZSsrXSxuPShzW2UrK108PDgpKygyNTUmc1tlKytdKTtyW3RdPWEuaW5kZXhPZihpLmdldChuKSl9fSgpfWw9cy5zdWJhcnJheSh0LGcpfW4mPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGMsbixyLGwpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBpPXRoaXMuYnl0ZXMsYT1pW2UrK10scj1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1pW2UrK107ci5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBuPWlbZSsrXTw8OHxpW2UrK107Zm9yKHM9MDtzPG47KytzKXtsZXQgdD1pW2UrK108PDh8aVtlKytdO2lmKDA9PT1zJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCBhPWlbZSsrXSxuPWlbZV08PDh8aVtlKzFdO2ZvcihsZXQgZT10O2U8bjsrK2Upci5wdXNoKGEpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2F9Ii5gKX1pZihyLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KGEscil9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWk7dGhpcy5vZmZTaXplPWF9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/ZGlbZV06ZS1maTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1maV06ZGlbMF19Z2V0U0lEKGUpe2xldCB0PWRpLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrZmk6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgaSBvZiB0KWlmKGlzTmFOKGkpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBpPXRoaXMudHlwZXNbZV07Im51bSIhPT1pJiYic2lkIiE9PWkmJiJvZmZzZXQiIT09aXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoaVswXSk/KGlbMF1bMF08PDgpK2lbMF1bMV06aVswXTt0LmtleVRvTmFtZU1hcFtlXT1pWzFdO3QubmFtZVRvS2V5TWFwW2lbMV1dPWU7dC50eXBlc1tlXT1pWzJdO3QuZGVmYXVsdHNbZV09aVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShpWzBdKT9pWzBdOltpWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IHlpPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoeWkpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IHdpPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHdpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBiaT17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsaSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGE9aS5kYXRhLHI9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7Y29uc3QgaT01KmUrcixzPWkrMSxuPWkrMixvPWkrMyxnPWkrNDtpZigyOSE9PWFbaV18fDAhPT1hW3NdfHwwIT09YVtuXXx8MCE9PWFbb118fDAhPT1hW2ddKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBjPXRbZV07YVtpXT0yOTthW3NdPWM+PjI0JjI1NTthW25dPWM+PjE2JjI1NTthW29dPWM+PjgmMjU1O2FbZ109MjU1JmN9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0saT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGkpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGkgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2kuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGkuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbj1zLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGcpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZCluLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgaT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtuLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGkpfWNvbnN0IGM9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO24uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO24uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobCk7aWYoZS5pc0NJREZvbnQpe24uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgaT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChpKTtzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBhPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxhLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbbl0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBpPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoaSl7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChpWzJdPytpWzJdOjApK2lbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgbj1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MiluLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIG59ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGkubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWlbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYoaSl7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixuPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQobik7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbj1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxuKTtsZXQgZz1pLmxlbmd0aDtuLm9mZnNldChnKTtvLmxlbmd0aHx8KGc9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsZ10saSk7aS5hZGQobyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtuLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGkpO2kuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUub3JkZXIpe2lmKCEoYSBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IHI9ZS52YWx1ZXNbYV0scz1lLnR5cGVzW2FdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtpZigwIT09ci5sZW5ndGgpe2ZvcihsZXQgbj0wLG89cy5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1zW25dLGc9cltuXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW2FdO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGkubGVuZ3RoKTtpLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHJbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1pLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIGl9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhpKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGk9MDtpPGUuY291bnQ7aSsrKXtjb25zdCBhPWUuZ2V0KGkpOzAhPT1hLmxlbmd0aD90LmFkZChhKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsaSxhKXtsZXQgcjtjb25zdCBzPXQtMTtpZihhKXI9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLHM+PjgmMjU1LDI1NSZzXSk7ZWxzZXtyPW5ldyBVaW50OEFycmF5KDErMipzKTtyWzBdPTA7bGV0IHQ9MDtjb25zdCBhPWUuY2hhcnNldC5sZW5ndGg7bGV0IG49ITE7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKz0yKXtsZXQgbz0wO2lmKHQ8YSl7Y29uc3QgYT1lLmNoYXJzZXRbdCsrXTtvPWkuZ2V0U0lEKGEpO2lmKC0xPT09byl7bz0wO2lmKCFuKXtuPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHthfSBpbiBDRkYgc3RyaW5nc2ApfX19cltzXT1vPj44JjI1NTtyW3MrMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGksYTtzd2l0Y2godCl7Y2FzZSAwOmk9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7aVswXT10O2ZvcihhPTA7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspaVthKzFdPWUuZmRTZWxlY3RbYV07YnJlYWs7Y2FzZSAzOmNvbnN0IHI9MDtsZXQgcz1lLmZkU2VsZWN0WzBdO2NvbnN0IG49W3QsMCwwLHI+PjgmMjU1LDI1NSZyLHNdO2ZvcihhPTE7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFthXTtpZih0IT09cyl7bi5wdXNoKGE+PjgmMjU1LDI1NSZhLHQpO3M9dH19Y29uc3Qgbz0obi5sZW5ndGgtMykvMztuWzFdPW8+PjgmMjU1O25bMl09MjU1Jm87bi5wdXNoKGE+PjgmMjU1LDI1NSZhKTtpPW5ldyBVaW50OEFycmF5KG4pfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGk9ZS5vYmplY3RzLGE9aS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuWzAsMF07Y29uc3Qgcj1bYT4+OCYyNTUsMjU1JmFdO2xldCBzLG4sbz0xO2ZvcihzPTA7czxhOysrcylvKz1pW3NdLmxlbmd0aDtuPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O3IucHVzaChuKTtsZXQgZz0xO2ZvcihzPTA7czxhKzE7cysrKXsxPT09bj9yLnB1c2goMjU1JmcpOjI9PT1uP3IucHVzaChnPj44JjI1NSwyNTUmZyk6Mz09PW4/ci5wdXNoKGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk6ci5wdXNoKGc+Pj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTtpW3NdJiYoZys9aVtzXS5sZW5ndGgpfWZvcihzPTA7czxhO3MrKyl7dFtzXSYmdFtzXS5vZmZzZXQoci5sZW5ndGgpO3IucHVzaCguLi5pW3NdKX1yZXR1cm4gcn19Y29uc3QgRGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksRmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSksU2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSkpO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBpPXRbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKWE9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO2E9ZS5zdWJzdHJpbmcoMSl9aWYoYT09PWEudG9VcHBlckNhc2UoKSl7aT1wYXJzZUludChhLDE2KTtpZihpPj0wKXJldHVybiBpfX1yZXR1cm4tMX1jb25zdCBraT1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBpPWtpW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGk9a2kubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9a2lbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgUmk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLE5pPW5ldyBNYXA7Y29uc3QgR2k9ITAsTWk9MSx4aT0yLEhpPTQsSmk9MzIsdmk9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGk9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1pKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWkpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixzLG47Y29uc3Qgbz0hIShlLmZsYWdzJkhpKTtpZihlLmlzSW50ZXJuYWxGb250KXtuPXQ7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe249Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKG8pZm9yKHMgaW4gdClhW3NdPXRbc107ZWxzZXtuPUJpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWNvbnN0IGc9ZS5kaWZmZXJlbmNlcztsZXQgYztpZihnKWZvcihzIGluIGcpe2NvbnN0IGU9Z1tzXTtyPWkuaW5kZXhPZihlKTtpZigtMT09PXIpe2N8fChjPURpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGMpO3QhPT1lJiYocj1pLmluZGV4T2YodCkpfWFbc109cj49MD9yOjB9cmV0dXJuIGF9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgWWk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pKSxLaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFRpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLHFpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5HaWxsU2Fuc01UPSJIZWx2ZXRpY2EiO2VbIkdpbGxTYW5zTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiR2lsbFNhbnNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiR2lsbFNhbnNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpLE9pPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSksUGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKSxXaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSksamk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pKSxYaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gS2koKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShLaSgpW3RdfHxxaSgpW3RdfHxPaSgpW3RdfHxQaSgpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY29kZVBvaW50QXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsaT10aGlzLmxhc3RDaGFyO3Q8PWk7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKGUsdCxHaSk7dGhpcy5jZmY9aS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBhPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPWEuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6aSxjTWFwOmF9PXQscj1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcyxuO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGk/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWlbZV07dm9pZCAwIT09YSYmKHRbYV09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBlPXJbbl07bz1hLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtzW29dPW59ZWxzZSBmb3Iobj0wO248ZS5jaGFyU3RyaW5ncy5jb3VudDtuKyspe289YS5jaGFyQ29kZU9mKG4pO3Nbb109bn1yZXR1cm4gc31sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cz10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHIpO3JldHVybiBzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGk9ZS5jaGFyc2V0LGE9dC5lbmNvZGluZyxyPVtdO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZih0Pj0wKXtjb25zdCBhPWlbdF07YSYmKHJbZV09YSl9fXIubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXIpfX1mdW5jdGlvbiBnZXRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gZ2V0VWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIGdldEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiBnZXRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBnZXRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MzI3Njg7dDwxMjQwP2k9MTA3OnQ8MzM5MDAmJihpPTExMzEpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsaSl7Y29uc3QgYT0xPT09Z2V0VWludDE2KGUsdCsyKT9nZXRVaW50MzIoZSx0KzgpOmdldFVpbnQzMihlLHQrMTYpLHI9Z2V0VWludDE2KGUsdCthKTtsZXQgcyxuLG87aWYoND09PXIpe2dldFVpbnQxNihlLHQrYSsyKTtjb25zdCBpPWdldFVpbnQxNihlLHQrYSs2KT4+MTtuPXQrYSsxNDtzPVtdO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb109e2VuZDpnZXRVaW50MTYoZSxuKX07bis9Mjtmb3Iobz0wO288aTtvKyssbis9MilzW29dLnN0YXJ0PWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uaWREZWx0YT1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9Mil7bGV0IHQ9Z2V0VWludDE2KGUsbik7aWYoMCE9PXQpe3Nbb10uaWRzPVtdO2ZvcihsZXQgaT0wLGE9c1tvXS5lbmQtc1tvXS5zdGFydCsxO2k8YTtpKyspe3Nbb10uaWRzW2ldPWdldFVpbnQxNihlLG4rdCk7dCs9Mn19fXJldHVybiBzfWlmKDEyPT09cil7Y29uc3QgaT1nZXRVaW50MzIoZSx0K2ErMTIpO249dCthKzE2O3M9W107Zm9yKG89MDtvPGk7bysrKXt0PWdldFVpbnQzMihlLG4pO3MucHVzaCh7c3RhcnQ6dCxlbmQ6Z2V0VWludDMyKGUsbis0KSxpZERlbHRhOmdldFVpbnQzMihlLG4rOCktdH0pO24rPTEyfXJldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxpLXQpLHt9LGEpLnBhcnNlKCk7cmV0dXJue2dseXBoczpyLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6ci50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpyLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6ci5pc0NJREZvbnQsZmRTZWxlY3Q6ci5mZFNlbGVjdCxmZEFycmF5OnIuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKTtsZXQgYT0wLHI9MCxzPWUubGVuZ3RoLTE7Zm9yKDtyPHM7KXtjb25zdCB0PXIrcysxPj4xO2k8ZVt0XS5zdGFydD9zPXQtMTpyPXR9ZVtyXS5zdGFydDw9aSYmaTw9ZVtyXS5lbmQmJihhPWVbcl0uaWREZWx0YSsoZVtyXS5pZHM/ZVtyXS5pZHNbaS1lW3JdLnN0YXJ0XTppKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmksZ2x5cGhJZDphfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxpLGEscil7dC5hZGQoIlEiLFtlLGksYSxyXSl9bGV0IGE9MDtjb25zdCByPWdldEludDE2KGUsYSk7bGV0IHMsbj0wLG89MDthKz0xMDtpZihyPDApZG97cz1nZXRVaW50MTYoZSxhKTtjb25zdCByPWdldFVpbnQxNihlLGErMik7YSs9NDtsZXQgZyxjO2lmKDEmcyl7aWYoMiZzKXtnPWdldEludDE2KGUsYSk7Yz1nZXRJbnQxNihlLGErMil9ZWxzZXtnPWdldFVpbnQxNihlLGEpO2M9Z2V0VWludDE2KGUsYSsyKX1hKz00fWVsc2UgaWYoMiZzKXtnPWdldEludDgoZSxhKyspO2M9Z2V0SW50OChlLGErKyl9ZWxzZXtnPWVbYSsrXTtjPWVbYSsrXX1pZigyJnMpe249ZztvPWN9ZWxzZXtuPTA7bz0wfWxldCBsPTEsaD0xLEM9MCxRPTA7aWYoOCZzKXtsPWg9Z2V0RmxvYXQyMTQoZSxhKTthKz0yfWVsc2UgaWYoNjQmcyl7bD1nZXRGbG9hdDIxNChlLGEpO2g9Z2V0RmxvYXQyMTQoZSxhKzIpO2ErPTR9ZWxzZSBpZigxMjgmcyl7bD1nZXRGbG9hdDIxNChlLGEpO0M9Z2V0RmxvYXQyMTQoZSxhKzIpO1E9Z2V0RmxvYXQyMTQoZSxhKzQpO2g9Z2V0RmxvYXQyMTQoZSxhKzYpO2ErPTh9Y29uc3QgRT1pLmdseXBoc1tyXTtpZihFKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbbCxDLFEsaCxuLG9dKTtjb21waWxlR2x5ZihFLHQsaSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJnMpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxyO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLGw9W107Zm9yKDtsLmxlbmd0aDxjOyl7cz1lW2ErK107bGV0IHQ9MTs4JnMmJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylsLnB1c2goe2ZsYWdzOnN9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZsW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119bFtpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmbFtpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfWxbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHI7YSsrKXtjb25zdCBlPXRbYV0scj1sLnNsaWNlKGgsZSsxKTtpZigxJnJbMF0uZmxhZ3Mpci5wdXNoKHJbMF0pO2Vsc2UgaWYoMSZyLmF0KC0xKS5mbGFncylyLnVuc2hpZnQoci5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihyWzBdLngrci5hdCgtMSkueCkvMix5OihyWzBdLnkrci5hdCgtMSkueSkvMn07ci51bnNoaWZ0KGUpO3IucHVzaChlKX1tb3ZlVG8oclswXS54LHJbMF0ueSk7Zm9yKGk9MSxnPXIubGVuZ3RoO2k8ZztpKyspaWYoMSZyW2ldLmZsYWdzKWxpbmVUbyhyW2ldLngscltpXS55KTtlbHNlIGlmKDEmcltpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnkscltpKzFdLngscltpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSwocltpXS54K3JbaSsxXS54KS8yLChyW2ldLnkrcltpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxpLGEscixzLG4pe3QuYWRkKCJDIixbZSxpLGEscixzLG5dKX1jb25zdCByPVtdO2xldCBzPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxsLGgsQyxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMTA6ZD1yLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixsLFEscyxRKTtjPXMrci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxsLG4scyxuKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtFPVErci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsbCxFLHMsRSk7Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO3U9RStyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxsLHUscyxuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PW47Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWw7bj1DO01hdGguYWJzKHMtZSk+TWF0aC5hYnMobi10KT9zKz1yLnNoaWZ0KCk6bis9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtuPXIucG9wKCk7cz1yLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHMsbik7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zys9bys3Pj4zO3A9ITA7YnJlYWs7Y2FzZSAyMTpuKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfXMrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bDtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKG4rPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW47bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2KT4+MTYpO2crPTI7YnJlYWs7Y2FzZSAyOTpkPXIucG9wKCkraS5nc3VicnNCaWFzO2Y9aS5nc3VicnNbZF07ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2RlZmF1bHQ6aWYobTwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7bX1gKTtpZihtPDI0NylyLnB1c2gobS0xMzkpO2Vsc2UgaWYobTwyNTEpci5wdXNoKDI1NioobS0yNDcpK2VbZysrXSsxMDgpO2Vsc2UgaWYobTwyNTUpci5wdXNoKDI1NiotKG0tMjUxKS1lW2crK10tMTA4KTtlbHNle3IucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNnxlW2crMl08PDh8ZVtnKzNdKS82NTUzNik7Zys9NH19cCYmKHIubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3RbaSxhLHIscyxuLG9dPXRoaXMuY3VycmVudFRyYW5zZm9ybTtmb3IobGV0IGU9MCxnPXQubGVuZ3RoO2U8ZztlKz0yKXtjb25zdCBnPXRbZV0sYz10W2UrMV07dFtlXT1pKmcrcipjK247dFtlKzFdPWEqZytzKmMrb310aGlzLmNtZHMucHVzaChgJHtlfSR7dC5qb2luKCIgIil9YCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0U1ZHKCl7cmV0dXJuIHRoaXMuY21kcy5qb2luKCIiKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCBhLHI9dGhpcy5jb21waWxlZEdseXBoc1tpXTtpZih2b2lkIDA9PT1yKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPSIiO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWU/Lmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiIiO2xldCBpPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtpPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8cn1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KGksNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBhPW5ldyBDb21tYW5kczthLnRyYW5zZm9ybShpLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCk7YS5hZGQoIloiKTtyZXR1cm4gYS5nZXRTVkcoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9RGkoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGkpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGkpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IGEscixzLG4sbyxnO2NvbnN0IGM9Z2V0VWludDE2KGksNCk7Zm9yKGxldCBlPTAsbD0xMjtlPGM7ZSsrLGwrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcoaS5zdWJhcnJheShsLGwrNCkpLGM9Z2V0VWludDMyKGksbCs4KSxoPWdldFVpbnQzMihpLGwrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOmE9cGFyc2VDbWFwKGksYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UibG9jYSI6cz1pLnN1YmFycmF5KGMsYytoKTticmVhaztjYXNlImhlYWQiOmc9Z2V0VWludDE2KGksYysxOCk7bz1nZXRVaW50MTYoaSxjKzUwKTticmVhaztjYXNlIkNGRiAiOm49cGFyc2VDZmYoaSxjLGMraCx0KX19aWYocil7Y29uc3QgdD1nP1sxL2csMCwwLDEvZywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGkpe2xldCBhLHI7aWYoaSl7YT00O3I9Z2V0VWludDMyfWVsc2V7YT0yO3I9KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3Qgcz1bXTtsZXQgbj1yKHQsMCk7Zm9yKGxldCBpPWE7aTx0Lmxlbmd0aDtpKz1hKXtjb25zdCBhPXIodCxpKTtzLnB1c2goZS5zdWJhcnJheShuLGEpKTtuPWF9cmV0dXJuIHN9KHIscyxvKSxhLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChuLGEsZS5mb250TWF0cml4KX19Y29uc3QgVmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pKTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KSl9KSksWmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTtjbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3Ioe2dseWZUYWJsZTplLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmksbnVtR2x5cGhzOmF9KXt0aGlzLmdseXBocz1bXTtjb25zdCByPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKSxzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxuPXQ/NDoyO2xldCBvPXQ/ci5nZXRVaW50MzIoMCk6MipyLmdldFVpbnQxNigwKSxnPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Zys9bjtjb25zdCBlPXQ/ci5nZXRVaW50MzIoZyk6MipyLmdldFVpbnQxNihnKTtpZihlPT09byl7dGhpcy5nbHlwaHMucHVzaChuZXcgR2x5cGgoe30pKTtjb250aW51ZX1jb25zdCBpPUdseXBoLnBhcnNlKG8scyk7dGhpcy5nbHlwaHMucHVzaChpKTtvPWV9fWdldFNpemUoKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKCgoZSx0KT0+ZSsodC5nZXRTaXplKCkrMyYtNCkpLDApfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGk9ZT4xMzEwNzAsYT1pPzQ6MixyPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSphKSk7aT9yLnNldFVpbnQzMigwLDApOnIuc2V0VWludDE2KDAsMCk7bGV0IHM9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3MrPWUud3JpdGUocyx0KTtzPXMrMyYtNDtuKz1hO2k/ci5zZXRVaW50MzIobixzKTpyLnNldFVpbnQxNihuLHM+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzppLGxvY2E6bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxpPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGk7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6aT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1pfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2ksYV09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1pO2lmKGEubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBpPVtdO2Zvcig7Oyl7Y29uc3RbYSxyXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPWE7aS5wdXNoKHIpO2lmKCEoMzImci5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsY29tcG9zaXRlczppfSl9Y29uc3Qgcj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsYS5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxzaW1wbGU6cn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBpPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWkud3JpdGUoZSx0KTtyZXR1cm4gZS1pfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBpIG9mIHRoaXMuY29tcG9zaXRlcylpLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46aSx4TWF4OmEseU1heDpyfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWk7dGhpcy54TWF4PWE7dGhpcy55TWF4PXJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOml9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWk7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7YS5wdXNoKGkpfWNvbnN0IHI9YVtpLTFdKzEscz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3MpO2UrPXM7Y29uc3Qgbz1bXTtmb3IobGV0IGk9MDtpPHI7ZSsrLGkrKyl7bGV0IGE9dC5nZXRVaW50OChlKTtvLnB1c2goYSk7aWYoOCZhKXtjb25zdCByPXQuZ2V0VWludDgoKytlKTthXj04O2ZvcihsZXQgZT0wO2U8cjtlKyspby5wdXNoKGEpO2krPXJ9fWNvbnN0IGc9W107bGV0IGM9W10sbD1bXSxoPVtdO2NvbnN0IEM9W107bGV0IFE9MCxFPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDImcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MTYmcj9pOi1pO2MucHVzaChFKX1lbHNlIGlmKDE2JnIpYy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChFKX1pZihhW1FdPT09aSl7USsrO2cucHVzaChjKTtjPVtdfX1FPTA7UT0wO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9b1tpXTtpZig0JnIpe2NvbnN0IGk9dC5nZXRVaW50OChlKyspO0UrPTMyJnI/aTotaTtsLnB1c2goRSl9ZWxzZSBpZigzMiZyKWwucHVzaChFKTtlbHNle0UrPXQuZ2V0SW50MTYoZSk7ZSs9MjtsLnB1c2goRSl9aC5wdXNoKDEmcnw2NCZyKTtpZihhW1FdPT09aSl7Yz1nW1FdO1ErKztDLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOmgseENvb3JkaW5hdGVzOmMseUNvb3JkaW5hdGVzOmx9KSk7bD1bXTtoPVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpDLGluc3RydWN0aW9uczpufSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGk9MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtlKz1hLmZsYWdzLmxlbmd0aDtmb3IobGV0IHI9MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWEueENvb3JkaW5hdGVzW3JdLG49YS55Q29vcmRpbmF0ZXNbcl07bGV0IG89TWF0aC5hYnMocy10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9cztvPU1hdGguYWJzKG4taSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTtpPW59fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lLGE9W10scj1bXSxzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdCBpIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWkuZmxhZ3NbZV07Y29uc3QgZz1pLnhDb29yZGluYXRlc1tlXTtsZXQgYz1nLW47aWYoMD09PWMpe3R8PTE2O2EucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzE4OjI7YS5wdXNoKGUpfWVsc2UgYS5wdXNoKGMpfW49Zztjb25zdCBsPWkueUNvb3JkaW5hdGVzW2VdO2M9bC1vO2lmKDA9PT1jKXt0fD0zMjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGMpO2lmKGU8PTI1NSl7dHw9Yz49MD8zNjo0O3IucHVzaChlKX1lbHNlIHIucHVzaChjKX1vPWw7cy5wdXNoKHQpfXQuc2V0VWludDE2KGUsYS5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgaSBvZiBzKXQuc2V0VWludDgoZSsrLGkpO2ZvcihsZXQgaT0wLHI9YS5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj1hW2ldLG49c1tpXTtpZigyJm4pdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDE2Jm4pKXt0LnNldEludDE2KGUscik7ZSs9Mn19Zm9yKGxldCBpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXJbaV0sbj1zW2ldO2lmKDQmbil0LnNldFVpbnQ4KGUrKyxhKTtlbHNlIGlmKCEoMzImbikpe3Quc2V0SW50MTYoZSxhKTtlKz0yfX1yZXR1cm4gZS1pfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3VycylpZigwIT09aS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgYT0wLHI9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2E8cjthKyspaS54Q29vcmRpbmF0ZXNbYV09TWF0aC5yb3VuZChlKyhpLnhDb29yZGluYXRlc1thXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTppLGFyZ3VtZW50MjphLHRyYW5zZjpyLGluc3RydWN0aW9uczpzfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWk7dGhpcy5hcmd1bWVudDI9YTt0aGlzLnRyYW5zZj1yO3RoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgaT1lLGE9W107bGV0IHI9dC5nZXRVaW50MTYoZSk7Y29uc3Qgcz10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IG4sbztpZigxJnIpe2lmKDImcil7bj10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7bj10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtyXj0xfWVsc2V7aWYoMiZyKXtuPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7bj10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGc9bnVsbDtpZigyNTYmcil7Y29uc3QgaT10LmdldFVpbnQxNihlKTtlKz0yO2c9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWl9cmV0dXJuW2UtaSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnIsZ2x5cGhJbmRleDpzLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjpvLHRyYW5zZjphLGluc3RydWN0aW9uczpnfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWl9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGkpe2VbdF09aT4+OCYyNTU7ZVt0KzFdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGkpe2VbdF09aT4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGkpe2lmKGkgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGksdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGkpZm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKWVbdCsrXT0yNTUmaS5jaGFyQ29kZUF0KGEpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgaSllW3QrK109MjU1JmF9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgaT0xLGE9MDtmb3IoOyhpXmUpPmk7KXtpPDw9MTthKyt9Y29uc3Qgcj1pKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsaT1PYmplY3Qua2V5cyh0KTtpLnNvcnQoKTtjb25zdCBhPWkubGVuZ3RoO2xldCByLHMsbixvLGcsYz0xMisxNiphO2NvbnN0IGw9W2NdO2ZvcihyPTA7cjxhO3IrKyl7bz10W2lbcl1dO2MrPShvLmxlbmd0aCszJi00KT4+PjA7bC5wdXNoKGMpfWNvbnN0IGg9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07d3JpdGVEYXRhKGgsbFtyXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO2hbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtoWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7aFsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2hbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGgsNCxhKTtjb25zdCBDPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGEsMTYpO3dyaXRlSW50MTYoaCw2LEMucmFuZ2UpO3dyaXRlSW50MTYoaCw4LEMuZW50cnkpO3dyaXRlSW50MTYoaCwxMCxDLnJhbmdlU2hpZnQpO2M9MTI7Zm9yKHI9MDtyPGE7cisrKXtnPWlbcl07aFtjXT0yNTUmZy5jaGFyQ29kZUF0KDApO2hbYysxXT0yNTUmZy5jaGFyQ29kZUF0KDEpO2hbYysyXT0yNTUmZy5jaGFyQ29kZUF0KDIpO2hbYyszXT0yNTUmZy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKHM9bFtyXSxuPWxbcisxXTtzPG47cys9NCl7ZT1lK3JlYWRVaW50MzIoaCxzKT4+PjB9d3JpdGVJbnQzMihoLGMrNCxlKTt3cml0ZUludDMyKGgsYys4LGxbcl0pO3dyaXRlSW50MzIoaCxjKzEyLHRbZ10ubGVuZ3RoKTtjKz0xNn1yZXR1cm4gaH1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IF9pPVs0XSx6aT1bNV0sJGk9WzZdLEFhPVs3XSxlYT1bOF0sdGE9WzEyLDM1XSxpYT1bMTRdLGFhPVsyMV0scmE9WzIyXSxzYT1bMzBdLG5hPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLG4sbz0hMTtmb3IobGV0IGc9MDtnPGE7ZysrKXtsZXQgYT1lW2ddO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytnXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLF9pKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsemkpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwkaSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLEFhKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsZWEpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbbl0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtuXSx0LGkpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscmEpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChpYVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYWEpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscmEpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsc2EpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbmEpO2JyZWFrO2Nhc2UgMzA3ODppZihpKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsaWEpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaWEpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxhYSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgZz10aGlzLnN0YWNrLnBvcCgpLGM9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goYy9nKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1uJiYzPT09bCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsdGEsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PW4mJjA9PT1sJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytnXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrZ10tMTA4OigyNTUmZVsrK2ddKTw8MjR8KDI1NSZlWysrZ10pPDwxNnwoMjU1JmVbKytnXSk8PDh8MjU1JmVbKytnXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCByPWEtZTtmb3IobGV0IGU9cjtlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtpP3RoaXMuc3RhY2suc3BsaWNlKHIsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsaSl7aWYoaT49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHIscz0wfHQ7Zm9yKGE9MDthPGk7YSsrKXM9NTI4NDUqKGVbYV0rcykrMjI3MTkmNjU1MzU7Y29uc3Qgbj1lLmxlbmd0aC1pLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGE9aSxyPTA7cjxuO2ErKyxyKyspe2NvbnN0IHQ9ZVthXTtvW3JdPXRecz4+ODtzPTUyODQ1Kih0K3MpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGk9ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKGk/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsaSl7bGV0IGE9MHx0O2NvbnN0IHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyPj4+MSk7bGV0IG4sbztmb3Iobj0wLG89MDtuPHI7bisrKXtjb25zdCB0PWVbbl07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7bisrO2xldCBpO2Zvcig7bjxyJiYhaXNIZXhEaWdpdChpPWVbbl0pOyluKys7aWYobjxyKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxpKSwxNik7c1tvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gcy5zbGljZShpLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFpO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgaT0iIjtkb3tpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBpfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGk9W10sYT1bXSxyPU9iamVjdC5jcmVhdGUobnVsbCk7ci5sZW5JVj00O2NvbnN0IHM9e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOnJ9fTtsZXQgbixvLGcsYztmb3IoO251bGwhPT0obj10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1uKXtuPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gobil7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7bj10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PW58fCJlbmQiPT09bilicmVhaztpZigiLyIhPT1uKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgaT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09bj90aGlzLmdldFRva2VuKCk6Ii8iPT09biYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOml9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjPXMucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGcsYyk7dGhpcy5uZXh0Q2hhcigpO249dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1uJiZ0aGlzLmdldFRva2VuKCk7aVtlXT1hfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6cn1vZiBhKXtjb25zdCBhPW5ldyBUeXBlMUNoYXJTdHJpbmcsbj1hLmNvbnZlcnQodCxpLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89YS5vdXRwdXQ7biYmKG89WzE0XSk7Y29uc3QgZz17Z2x5cGhOYW1lOnIsY2hhcnN0cmluZzpvLHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfTsiLm5vdGRlZiI9PT1yP3MuY2hhcnN0cmluZ3MudW5zaGlmdChnKTpzLmNoYXJzdHJpbmdzLnB1c2goZyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihyKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1hLndpZHRoKX19cmV0dXJuIHN9ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgaT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1pO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2xldCByO2lmKC9eXGQrJC8udGVzdChhKSl7cj1bXTtjb25zdCBlPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGk9dGhpcy5nZXRUb2tlbigpO3JbZV09aTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugcj1nZXRFbmNvZGluZyhhKTtlLmJ1aWx0SW5FbmNvZGluZz1yO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHM9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChzWzNdLHNbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihzWzFdLHNbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aCxyPXQubGVuZ3RoLHM9YS1yO2xldCBuPWksbz0hMTtmb3IoO248czspe2xldCBpPTA7Zm9yKDtpPHImJmVbbitpXT09PXRbaV07KWkrKztpZihpPj1yKXtuKz1pO2Zvcig7bjxhJiZpc1doaXRlU3BhY2UoZVtuXSk7KW4rKztvPSEwO2JyZWFrfW4rK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6bn19Y2xhc3MgVHlwZTFGb250e2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYT1pLmxlbmd0aDEscj1pLmxlbmd0aDIscz10LnBlZWtCeXRlcyg2KTtjb25zdCBuPTEyOD09PXNbMF0mJjE9PT1zWzFdO2lmKG4pe3Quc2tpcCg2KTthPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBvPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3QgaT1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCByLHMsbixvO3RyeXtyPWUuZ2V0Qnl0ZXModCk7cz1yLmxlbmd0aH1jYXRjaHt9aWYocz09PXQpe249ZmluZEJsb2NrKHIsaSx0LTIqaS5sZW5ndGgpO2lmKG4uZm91bmQmJm4ubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ociksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe249ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLGksMCk7aWYoMD09PW4ubGVuZ3RoKWJyZWFrO2UucG9zKz1uLmxlbmd0aDtpZihuLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KHQsYSk7bmV3IFR5cGUxUGFyc2VyKG8uc3RyZWFtLCExLEdpKS5leHRyYWN0Rm9udEhlYWRlcihpKTtpZihuKXtzPXQuZ2V0Qnl0ZXMoNik7cj1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3QgZz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7aWYoMD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oaSksbGVuZ3RoOmkubGVuZ3RofX0odCksYz1uZXcgVHlwZTFQYXJzZXIoZy5zdHJlYW0sITAsR2kpLmV4dHJhY3RGb250UHJvZ3JhbShpKTtmb3IoY29uc3QgZSBpbiBjLnByb3BlcnRpZXMpaVtlXT1jLnByb3BlcnRpZXNbZV07Y29uc3QgbD1jLmNoYXJzdHJpbmdzLGg9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKGwpLEM9dGhpcy5nZXRUeXBlMlN1YnJzKGMuc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9bDt0aGlzLmRhdGE9dGhpcy53cmFwKGUsaCx0aGlzLmNoYXJzdHJpbmdzLEMsaSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKGMuY2hhcnN0cmluZ3MpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7aVtlLmNNYXAuY2hhckNvZGVPZihhKV09YSsxfXJldHVybiBpfWNvbnN0IGk9WyIubm90ZGVmIl07bGV0IGEscjtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWkucHVzaCh0W3JdLmdseXBoTmFtZSk7Y29uc3Qgcz1lLmJ1aWx0SW5FbmNvZGluZztpZihzKXthPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gcyl7cj1pLmluZGV4T2Yoc1tlXSk7cj49MCYmKGFbZV09cil9fXJldHVybiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSxhLGkpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTthLnNlYWMmJih0W2krMV09YS5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl0LnB1c2goaS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgaT1lLmxlbmd0aDt0PWk8MTEzMz8xMDc6aTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPHQ7cisrKWEucHVzaChbMTFdKTtmb3Iocj0wO3I8aTtyKyspYS5wdXNoKGVbcl0pO3JldHVybiBhfXdyYXAoZSx0LGksYSxyKXtjb25zdCBzPW5ldyBDRkY7cy5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtzLm5hbWVzPVtlXTtjb25zdCBuPW5ldyBDRkZUb3BEaWN0O24uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO24uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7bi5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO24uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO24uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7bi5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsci5mb250TWF0cml4KTtuLnNldEJ5TmFtZSgiRm9udEJCb3giLHIuYmJveCk7bi5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO24uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7bi5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1uO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO3Muc3RyaW5ncz1vO3MuZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBnPXQubGVuZ3RoLGM9WyIubm90ZGVmIl07bGV0IGwsaDtmb3IobD0wO2w8ZztsKyspe2NvbnN0IGU9aVtsXS5nbHlwaE5hbWU7LTE9PT1kaS5pbmRleE9mKGUpJiZvLmFkZChlKTtjLnB1c2goZSl9cy5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsYyk7Y29uc3QgQz1uZXcgQ0ZGSW5kZXg7Qy5hZGQoWzEzOSwxNF0pO2ZvcihsPTA7bDxnO2wrKylDLmFkZCh0W2xdKTtzLmNoYXJTdHJpbmdzPUM7Y29uc3QgUT1uZXcgQ0ZGUHJpdmF0ZURpY3Q7US5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCBFPVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGw9MCxoPUUubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9RVtsXTtpZighKGUgaW4gci5wcml2YXRlRGF0YSkpY29udGludWU7Y29uc3QgdD1yLnByaXZhdGVEYXRhW2VdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07US5zZXRCeU5hbWUoZSx0KX1zLnRvcERpY3QucHJpdmF0ZURpY3Q9UTtjb25zdCB1PW5ldyBDRkZJbmRleDtmb3IobD0wLGg9YS5sZW5ndGg7bDxoO2wrKyl1LmFkZChhW2xdKTtRLnN1YnJzSW5kZXg9dTtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKHMpLmNvbXBpbGUoKX19Y29uc3Qgb2E9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLGdhPTFlMyxJYT1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNvbXBvc2l0ZSIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJmYWxsYmFja05hbWUiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwic3lzdGVtRm9udEluZm8iLCJ0eXBlIiwidmVydGljYWwiXSxjYT1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09clswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxpPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGkpaVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBpIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKGkpfHwodFtpXT1lLmZhbGxiYWNrVG9Vbmljb2RlW2ldKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsaSxhLHIscyxuLG8sZyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1pO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1yO3RoaXMudm1ldHJpYz1zO3RoaXMub3BlcmF0b3JMaXN0SWQ9bjt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWd9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PU5pLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9ZS5tYXRjaChSaSksYT17aXNXaGl0ZXNwYWNlOiEhaT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhaT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWk/LlszXX07Tmkuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGkpe2VbdCsxXT1pO2VbdF09aT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBpPShlPDw4KSt0O3JldHVybiAzMjc2OCZpP2ktNjU1MzY6aX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe3JldHVybiJ0dGNmIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTppLGNvbXBvc2l0ZTphfSl7bGV0IHIscztpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PXJlYWRVaW50MzIodCwwKXx8InRydWUiPT09Ynl0ZXNUb1N0cmluZyh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlyPWE/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlyPWE/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpcj1hPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYoYSl7cj0iQ0lERm9udFR5cGUwIjtzPSJDSURGb250VHlwZTBDIn1lbHNle3I9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtzPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtyPXQ7cz1pfXJldHVybltyLHNdfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgaSBpbiB0KWVbK2ldPXRbaV19ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxpKXtjb25zdCBhPVtdO2xldCByO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7cj1nZXRVbmljb2RlRm9yR2x5cGgoZVtpXSx0KTstMSE9PXImJihhW2ldPXIpfWZvcihjb25zdCBlIGluIGkpe3I9Z2V0VW5pY29kZUZvckdseXBoKGlbZV0sdCk7LTEhPT1yJiYoYVsrZV09cil9cmV0dXJuIGF9ZnVuY3Rpb24gaXNNYWNOYW1lUmVjb3JkKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGlzV2luTmFtZVJlY29yZChlKXtyZXR1cm4gMz09PWUucGxhdGZvcm0mJjE9PT1lLmVuY29kaW5nJiYxMDMzPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxpPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBhPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYSk7d2FybihhKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsbj1bXSxvPW5ldyBTZXQ7bGV0IGc9MDtsZXQgYz1vYVtnXVswXSxsPW9hW2ddWzFdO2Zvcihjb25zdCBDIGluIGUpe2xldCBRPWVbQ107aWYoIXQoUSkpY29udGludWU7aWYoYz5sKXtnKys7aWYoZz49b2EubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31jPW9hW2ddWzBdO2w9b2FbZ11bMV19Y29uc3QgRT1jKys7MD09PVEmJihRPWkpO2xldCB1PWEuZ2V0KEMpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9dS5jb2RlUG9pbnRBdCgwKSk7aWYodSYmIShoPXUsb2FbMF1bMF08PWgmJmg8PW9hWzBdWzFdfHxvYVsxXVswXTw9aCYmaDw9b2FbMV1bMV0pJiYhby5oYXMoUSkpe3Muc2V0KHUsUSk7by5hZGQoUSl9cltFXT1RO25bQ109RX12YXIgaDtyZXR1cm57dG9Gb250Q2hhcjpuLGNoYXJDb2RlVG9HbHlwaElkOnIsdG9Vbmljb2RlRXh0cmFNYXA6cyxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmN9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsaSl7Y29uc3QgYT1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1pfHxhLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxyXW9mIHQpcj49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOnJ9KTswPT09YS5sZW5ndGgmJmEucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7YS5zb3J0KChmdW5jdGlvbiBmb250R2V0UmFuZ2VzU29ydChlLHQpe3JldHVybiBlLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZX0pKTtjb25zdCByPVtdLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxpPVthW2VdLmdseXBoSWRdOysrZTtsZXQgbj10O2Zvcig7ZTxzJiZuKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe2kucHVzaChhW2VdLmdseXBoSWQpOysrbjsrK2U7aWYoNjU1MzU9PT1uKWJyZWFrfXIucHVzaChbdCxuLGldKX1yZXR1cm4gcn0oZSx0LGkpLHI9YS5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBzLG4sbyxnLGM9IlwwXDAiK3N0cmluZzE2KHIpKyJcMANcMAEiK3N0cmluZzMyKDQrOCpyKTtmb3Iocz1hLmxlbmd0aC0xO3M+PTAmJiEoYVtzXVswXTw9NjU1MzUpOy0tcyk7Y29uc3QgbD1zKzE7YVtzXVswXTw2NTUzNSYmNjU1MzU9PT1hW3NdWzFdJiYoYVtzXVsxXT02NTUzNCk7Y29uc3QgaD1hW3NdWzFdPDY1NTM1PzE6MCxDPWwraCxRPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKEMsMik7bGV0IEUsdSxkLGYscD0iIixtPSIiLHk9IiIsdz0iIixiPSIiLEQ9MDtmb3Iocz0wLG49bDtzPG47cysrKXtFPWFbc107dT1FWzBdO2Q9RVsxXTtwKz1zdHJpbmcxNih1KTttKz1zdHJpbmcxNihkKTtmPUVbMl07bGV0IGU9ITA7Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe3krPXN0cmluZzE2KGZbMF0tdSY2NTUzNSk7dys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKEMtcykrMipEO0QrPWQtdSsxO3krPXN0cmluZzE2KDApO3crPXN0cmluZzE2KGUpO2ZvcihvPTAsZz1mLmxlbmd0aDtvPGc7KytvKWIrPXN0cmluZzE2KGZbb10pfX1pZihoPjApe20rPSLDv8O/IjtwKz0iw7/DvyI7eSs9IlwwASI7dys9IlwwXDAifWNvbnN0IFM9IlwwXDAiK3N0cmluZzE2KDIqQykrc3RyaW5nMTYoUS5yYW5nZSkrc3RyaW5nMTYoUS5lbnRyeSkrc3RyaW5nMTYoUS5yYW5nZVNoaWZ0KSttKyJcMFwwIitwK3krdytiO2xldCBrPSIiLFI9IiI7aWYocj4xKXtjKz0iXDADXDBcbiIrc3RyaW5nMzIoNCs4KnIrNCtTLmxlbmd0aCk7az0iIjtmb3Iocz0wLG49YS5sZW5ndGg7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtmPUVbMl07bGV0IGU9ZlswXTtmb3Iobz0xLGc9Zi5sZW5ndGg7bzxnOysrbylpZihmW29dIT09ZltvLTFdKzEpe2Q9RVswXStvLTE7ays9c3RyaW5nMzIodSkrc3RyaW5nMzIoZCkrc3RyaW5nMzIoZSk7dT1kKzE7ZT1mW29dfWsrPXN0cmluZzMyKHUpK3N0cmluZzMyKEVbMV0pK3N0cmluZzMyKGUpfVI9IlwwXGZcMFwwIitzdHJpbmczMihrLmxlbmd0aCsxNikrIlwwXDBcMFwwIitzdHJpbmczMihrLmxlbmd0aC8xMil9cmV0dXJuIGMrIlwwBCIrc3RyaW5nMTYoUy5sZW5ndGgrNCkrUytSK2t9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGkpe2l8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgYT0wLHI9MCxzPTAsbj0wLG89bnVsbCxnPTAsYz0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobz5lfHwhbykmJihvPWUpO2c8ZSYmKGc9ZSk7Yz1nZXRVbmljb2RlUmFuZ2VGb3IoZSxjKTtpZihjPDMyKWF8PTE8PGM7ZWxzZSBpZihjPDY0KXJ8PTE8PGMtMzI7ZWxzZSBpZihjPDk2KXN8PTE8PGMtNjQ7ZWxzZXtpZighKGM8MTIzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO258PTE8PGMtOTZ9fWc+NjU1MzUmJihnPTY1NTM1KX1lbHNle289MDtnPTI1NX1jb25zdCBsPWUuYmJveHx8WzAsMCwwLDBdLGg9aS51bml0c1BlckVtfHwoZS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uZS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzKSxDPWUuYXNjZW50U2NhbGVkPzE6aC9nYSxRPWkuYXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuYXNjZW50fHxsWzNdKSk7bGV0IEU9aS5kZXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuZGVzY2VudHx8bFsxXSkpO0U+MCYmZS5kZXNjZW50PjAmJmxbMV08MCYmKEU9LUUpO2NvbnN0IHU9aS55TWF4fHxRLGQ9LWkueU1pbnx8LUU7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIoYSkrc3RyaW5nMzIocikrc3RyaW5nMzIocykrc3RyaW5nMzIobikrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoZ3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoUSkrc3RyaW5nMTYoRSkrIlwwZCIrc3RyaW5nMTYodSkrc3RyaW5nMTYoZCkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBpPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxhPVtdO2xldCByLHMsbixvLGc7Zm9yKHI9MCxzPWkubGVuZ3RoO3I8cztyKyspe2c9dFsxXVtyXXx8aVtyXTtjb25zdCBlPVtdO2ZvcihuPTAsbz1nLmxlbmd0aDtuPG87bisrKWUucHVzaChzdHJpbmcxNihnLmNoYXJDb2RlQXQobikpKTthLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgYz1baSxhXSxsPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxDPVsiXDBcMCIsIgRcdCJdLFE9aS5sZW5ndGgqbC5sZW5ndGg7bGV0IEU9IlwwXDAiK3N0cmluZzE2KFEpK3N0cmluZzE2KDEyKlErNiksdT0wO2ZvcihyPTAscz1sLmxlbmd0aDtyPHM7cisrKXtjb25zdCBlPWNbcl07Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspe2c9ZVtuXTtFKz1sW3JdK2hbcl0rQ1tyXStzdHJpbmcxNihuKStzdHJpbmcxNihnLmxlbmd0aCkrc3RyaW5nMTYodSk7dSs9Zy5sZW5ndGh9fUUrPWkuam9pbigiIikrYS5qb2luKCIiKTtyZXR1cm4gRX1jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT0hMTt0aGlzLmxvYWRlZE5hbWU9aS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9aS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89aS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSEhKGkuZmxhZ3MmeGkpO2lmKCFhJiYhaS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGk9T2koKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoaVtlXSl7YT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1hO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoaS5mbGFncyZIaSk7dGhpcy5pc01vbm9zcGFjZT0hIShpLmZsYWdzJk1pKTtsZXR7dHlwZTpyLHN1YnR5cGU6c309aTt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWkuc3lzdGVtRm9udEluZm87Y29uc3Qgbj1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW47dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9blsxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWkuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9aS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9aS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9aS5jb21wb3NpdGU7dGhpcy5jTWFwPWkuY01hcDt0aGlzLmNhcEhlaWdodD1pLmNhcEhlaWdodC9nYTt0aGlzLmFzY2VudD1pLmFzY2VudC9nYTt0aGlzLmRlc2NlbnQ9aS5kZXNjZW50L2dhO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLmJib3g9aS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWkuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09aS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGkuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWkuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFpLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9aS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1pLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGkpO3JldHVybn1bcixzXT1nZXRGb250RmlsZVR5cGUodCxpKTtyPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3J9LyR7c30uYCk7bGV0IG87dHJ5e3N3aXRjaChyKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsaSk6bmV3IFR5cGUxRm9udChlLHQsaSk7YWRqdXN0V2lkdGhzKGkpO289dGhpcy5jb252ZXJ0KGUsYSxpKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxpKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhpKTtyPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShpKTt0aGlzLmRhdGE9bzt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLmZvbnRNYXRyaXg9aS5mb250TWF0cml4O3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1pLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxHaSkpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5JYSwuLi5jYV06SWEsaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhLHI7Zm9yKGEgb2YgdCl7cj10aGlzW2FdO3ZvaWQgMCE9PXImJihpW2FdPXIpfXJldHVybiBpfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6aX09dGhpcztsZXQgYT1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCByPUtpKCkscz1xaSgpLG49ISFyW2FdLG89ISghc1thXXx8IXJbc1thXV0pO2E9clthXXx8c1thXXx8YTtjb25zdCBnPVppKClbYV07aWYoZyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Zy5hc2NlbnQvZ2EpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Zy5kZXNjZW50L2dhKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1nLmNhcEhlaWdodC9nYSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoYSk7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGM9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFufHxjKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChufHxvKSYmIkNJREZvbnRUeXBlMiI9PT1pJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBpPWUuY2lkVG9HaWRNYXAsYT1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsV2koKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLGppKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFhpKCkpO2lmKGkpe2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTt2b2lkIDAhPT1pW3RdJiYoYVsrZV09aVt0XSl9aS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1hW2VdO3ZvaWQgMD09PWlbcl0mJihhWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2FbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoRWksRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih1aSxGaSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYobnx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWl8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZVsrdF09aX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9RGkoKSxpPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWkmJihhPWkpfWlbK3RdPWF9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoaSxXaSgpKTt0aGlzLnRvRm9udENoYXI9aX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1hLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsaSl7Y29uc3QgYT1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpWyJPUy8yIl09bnVsbDtpLmNtYXA9bnVsbDtpLmhlYWQ9bnVsbDtpLmhoZWE9bnVsbDtpLmhtdHg9bnVsbDtpLm1heHA9bnVsbDtpLm5hbWU9bnVsbDtpLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO2EuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoaVt0LnRhZ109dCkpfXJldHVybiBpfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAscz1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChhKTtjb25zdCBuPWUuZ2V0Qnl0ZXMocik7ZS5wb3M9cztpZigiaGVhZCI9PT10KXtuWzhdPW5bOV09blsxMF09blsxMV09MDtuWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmksbGVuZ3RoOnIsb2Zmc2V0OmEsZGF0YTpufX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxpLGEscixzKXtjb25zdCBuPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8aT5lLmxlbmd0aHx8aS10PD0xMilyZXR1cm4gbjtjb25zdCBvPWUuc3ViYXJyYXkodCxpKSxnPXNpZ25lZEludDE2KG9bMl0sb1szXSksYz1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGw9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYoZz5sKXt3cml0ZVNpZ25lZEludDE2KG8sMixsKTt3cml0ZVNpZ25lZEludDE2KG8sNixnKX1pZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGMpfWNvbnN0IEM9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZihDPDApe2lmKEM8LTEpcmV0dXJuIG47YS5zZXQobyxyKTtuLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gbn1sZXQgUSxFPTEwLHU9MDtmb3IoUT0wO1E8QztRKyspe3U9KG9bRV08PDh8b1tFKzFdKSsxO0UrPTJ9Y29uc3QgZD1FLGY9b1tFXTw8OHxvW0UrMV07bi5zaXplT2ZJbnN0cnVjdGlvbnM9ZjtFKz0yK2Y7Y29uc3QgcD1FO2xldCBtPTA7Zm9yKFE9MDtRPHU7USsrKXtjb25zdCBlPW9bRSsrXTsxOTImZSYmKG9bRS0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IGk9Mjs0JmU/aT0xOjMyJmUmJihpPTApO2NvbnN0IGE9dCtpO20rPWE7aWYoOCZlKXtjb25zdCBlPW9bRSsrXTswPT09ZSYmKG9bRS0xXV49OCk7USs9ZTttKz1lKmF9fWlmKDA9PT1tKXJldHVybiBuO2xldCB5PUUrbTtpZih5Pm8ubGVuZ3RoKXJldHVybiBuO2lmKCFzJiZmPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxkKSxyKTthLnNldChbMCwwXSxyK2QpO2Euc2V0KG8uc3ViYXJyYXkocCx5KSxyK2QrMik7eS09ZjtvLmxlbmd0aC15PjMmJih5PXkrMyYtNCk7bi5sZW5ndGg9eTtyZXR1cm4gbn1pZihvLmxlbmd0aC15PjMpe3k9eSszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCx5KSxyKTtuLmxlbmd0aD15O3JldHVybiBufWEuc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IGE9W1tdLFtdXSxyPVtdLHM9ZS5sZW5ndGgsbj1pK3M7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHM8NilyZXR1cm5bYSxyXTtjb25zdCBvPXQuZ2V0VWludDE2KCksZz10LmdldFVpbnQxNigpO2xldCBjLGw7Zm9yKGM9MDtjPG8mJnQucG9zKzEyPD1uO2MrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZyLnB1c2goZSl9Zm9yKGM9MCxsPXIubGVuZ3RoO2M8bDtjKyspe2NvbnN0IGU9cltjXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBzPWkrZytlLm9mZnNldDtpZihzK2UubGVuZ3RoPm4pY29udGludWU7dC5wb3M9cztjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgaT0iIjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1pfWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Escl19Y29uc3Qgcj1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGksYSxzLG4sbyxnPWUuZGF0YSxjPTAsbD0wLGg9MDtjb25zdCBDPVtdLFE9W10sRT1bXTtsZXQgdT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxkPSExLGY9MCxwPTA7Zm9yKGxldCBlPWcubGVuZ3RoO2M8ZTspe2NvbnN0IGU9Z1tjKytdO2lmKDY0PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKUMucHVzaChnW2MrK10pfWVsc2UgaWYoNjU9PT1lKXthPWdbYysrXTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHM8PDh8Z1tjKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe2E9ZS0xNzYrMTtpZihkfHxwKWMrPWE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspQy5wdXNoKGdbYysrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe2E9ZS0xODQrMTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHNpZ25lZEludDE2KHMsZ1tjKytdKSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7bD1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPUMubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9Qy5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9YztuPUMucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1DLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPUMubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufUMubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpDLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1DLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmQy5sZW5ndGg+MDspe0MucG9wKCk7dCsrfWZvcig7dD4wOyl7Qy5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGg+bCl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgbD10LmdldEludDMyKCk7Y29uc3QgaD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09bCYmMjA0ODAhPT1sKXtpZig2PT09bi5tYXhwLmxlbmd0aClsPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtsPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLGwpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpofSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgQz1oKzEsUT0hMDtpZihDPjY1NTM1KXtRPSExO0M9aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1DPj44O24ubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLEMsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsaCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBsPXM/aSsxOmksaD1vKigxK2wpLEM9bmV3IFVpbnQ4QXJyYXkoaCk7Qy5zZXQoZS5kYXRhLnN1YmFycmF5KDAsaCkpO2UuZGF0YT1DO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcoQyxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhDLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MoQyxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8bDtkKyssZis9byljKEMsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcoQyxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLEMubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsaCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz12aTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgbD1bXSxoPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7aC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpaFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtsLnB1c2goaC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2godmlbZV0pOm8ucHVzaChsW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksaCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxoJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgbD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cylsPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtsPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtsPSEwO2l8fChnPSEwKX1lbHNlIGw9ITA7bCYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IGw9ITE7Y29uc3QgaD1bXTtsZXQgQyxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKEM9MDtDPDI1NjtDKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpDLGdseXBoSWQ6ZX0pfWw9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKEM9MDtDPHIuZW50cnlDb3VudDtDKyspe2NvbnN0IGU9KGk8PDgpK0Mrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqQztRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKEM9MDtDPG87QysrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihDPXM7Qzw9ZTtDKyspaWYoNjU1MzUhPT1DKXtRPW48MD9DOmdbbitDLXNdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6QyxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihDPTA7QzxpO0MrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStDO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihDPTA7QzxlO0MrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOmx9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT1EaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOkJpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1DaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PUMtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLEMpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksR2kpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1RaSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPVFpLHI9W10scz1EaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1EaSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKGE9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBsPXQuc2VhY3M7aWYobiYmbD8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8cixhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbCl7dHw9MDtjb25zdCBpPWxbdF0scj1CaVtpWzJdXSxnPUJpW2lbM11dLGM9YS5pbmRleE9mKHIpLGg9YS5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IEM9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpDfX19aS5zZWFjTWFwPW99Y29uc3QgaD1pLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5pLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsQz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO0MuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7Qy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoaSxvKSk7Qy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sZyxjKSk7Qy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNihoKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihpLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc3RyaW5nMTYoaS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtDLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGkuYXNjZW50KStzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihpLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGkuaXRhbGljQW5nbGUpKmkueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoYykpO0MuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGk9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IGE9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxyPWM7dDxyO3QrKyl7bGV0IHI9MDtpZihlKXtjb25zdCBpPWVbdC0xXTtyPSJ3aWR0aCJpbiBpP2kud2lkdGg6MH1lbHNlIGkmJihyPU1hdGguY2VpbChpW3RdfHwwKSk7YSs9c3RyaW5nMTYocikrc3RyaW5nMTYoMCl9cmV0dXJuIGF9KCkpO0MuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihjKSk7Qy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtDLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoaSkpO3JldHVybiBDLnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoaSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1tpXTticmVha31jb25zdCBlPURpKClbaV07bGV0IGE9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXthPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGUsYSkpfSFhJiZ0aGlzLnRvVW5pY29kZSYmKGE9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7YTw9MCYmKGE9ZSk7dD10aGlzLndpZHRoc1thXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgaSxhLHIscz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBuPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7bj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49Y29udmVydENpZFN0cmluZyhlLG4pKX1hPXRoaXMud2lkdGhzW25dOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW25dO2xldCBnPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGcmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUoZykpO2xldCBjPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXtpPTMyO2lmKCIiPT09dCl7YXx8PXRoaXMuX3NwYWNlV2lkdGg7Zz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfX1pPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/U2koKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGkpfXRoaXMuaXNUeXBlM0ZvbnQmJihyPWkpO2xldCBsPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2M9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07aT10LmJhc2VGb250Q2hhckNvZGU7bD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGg9IiI7Im51bWJlciI9PXR5cGVvZiBpJiYoaTw9MTExNDExMT9oPVN0cmluZy5mcm9tQ29kZVBvaW50KGkpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7aX1gKSk7aWYodGhpcy5taXNzaW5nRmlsZSYmdGhpcy52ZXJ0aWNhbCYmMT09PWgubGVuZ3RoKXtjb25zdCBlPVlpKClbaC5jaGFyQ29kZUF0KDApXTtlJiYoaD1nPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfXM9bmV3IGZvbnRzX0dseXBoKGUsaCxnLGwsYSxvLHIsdCxjKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1zfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxhOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsaSk7Y29uc3R7Y2hhcmNvZGU6YSxsZW5ndGg6c309aTtyKz1zO2NvbnN0IG49dGhpcy5fY2hhclRvR2x5cGgoYSwxPT09cyYmMzI9PT1lLmNoYXJDb2RlQXQoci0xKSk7dC5wdXNoKG4pfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSkscj10aGlzLl9jaGFyVG9HbHlwaChhLDMyPT09YSk7dC5wdXNoKHIpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPTA7Zm9yKDthPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGEsaSk7Y29uc3Qgcj1pLmxlbmd0aDt0LnB1c2goW2EsYStyXSk7YSs9cn19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpdC5wdXNoKFtpLGkrMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10saT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KHIpO3M+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmcisrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocyk7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9aS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHMpKX10LnB1c2goaS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YShlPSExKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IGxhPTIsaGE9MyxDYT00LEJhPTUsUWE9NixFYT03O2NsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxpLGEscil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxuPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobil7Y2FzZSBsYTpjYXNlIGhhOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxpLGEscik7Y2FzZSBDYTpjYXNlIEJhOmNhc2UgUWE6Y2FzZSBFYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxpLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK24pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2dldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09bGE/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1oYSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBvPTAsZz0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW28sZ109Yyk7bGV0IGw9ITEsaD0hMTtjb25zdCBDPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKEMsMikmJihbbCxoXT1DKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1oYXx8bCYmaCkpe2NvbnN0W2UsdCxpLGEscixzXT10aGlzLmNvb3Jkc0FycixuPU1hdGguaHlwb3QoZS1hLHQtcik7aTw9cytuJiZzPD1pK24mJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PWw7dGhpcy5leHRlbmRFbmQ9aDtjb25zdCBRPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLEU9YS5jcmVhdGVGcm9tQXJyYXkoUSksdT0oZy1vKS84NDAsZD10aGlzLmNvbG9yU3RvcHM9W107aWYobz49Z3x8dTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCBmPW5ldyBGbG9hdDMyQXJyYXkobi5udW1Db21wcykscD1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCBtLHk9MDtwWzBdPW87RShwLDAsZiwwKTtsZXQgdz1uLmdldFJnYihmLDApO2NvbnN0IGI9VXRpbC5tYWtlSGV4Q29sb3Iod1swXSx3WzFdLHdbMl0pO2QucHVzaChbMCxiXSk7bGV0IEQ9MTtwWzBdPW8rdTtFKHAsMCxmLDApO2xldCBTPW4uZ2V0UmdiKGYsMCksaz1TWzBdLXdbMF0rMSxSPVNbMV0td1sxXSsxLE49U1syXS13WzJdKzEsRz1TWzBdLXdbMF0tMSxNPVNbMV0td1sxXS0xLFU9U1syXS13WzJdLTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXtwWzBdPW8rZSp1O0UocCwwLGYsMCk7bT1uLmdldFJnYihmLDApO2NvbnN0IHQ9ZS15O2s9TWF0aC5taW4oaywobVswXS13WzBdKzEpL3QpO1I9TWF0aC5taW4oUiwobVsxXS13WzFdKzEpL3QpO049TWF0aC5taW4oTiwobVsyXS13WzJdKzEpL3QpO0c9TWF0aC5tYXgoRywobVswXS13WzBdLTEpL3QpO009TWF0aC5tYXgoTSwobVsxXS13WzFdLTEpL3QpO1U9TWF0aC5tYXgoVSwobVsyXS13WzJdLTEpL3QpO2lmKCEoRzw9ayYmTTw9UiYmVTw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoU1swXSxTWzFdLFNbMl0pO2QucHVzaChbRC84NDAsZV0pO2s9bVswXS1TWzBdKzE7Uj1tWzFdLVNbMV0rMTtOPW1bMl0tU1syXSsxO0c9bVswXS1TWzBdLTE7TT1tWzFdLVNbMV0tMTtVPW1bMl0tU1syXS0xO3k9RDt3PVN9RD1lO1M9bX1jb25zdCB4PVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goWzEseF0pO2xldCBMPSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7bT1uLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO0w9VXRpbC5tYWtlSGV4Q29sb3IobVswXSxtWzFdLG1bMl0pfWlmKCFsKXtkLnVuc2hpZnQoWzAsTF0pO2RbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighaCl7ZC5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtkLnB1c2goWzEsTF0pfXRoaXMuY29sb3JTdG9wcz1kfWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgaSxhLHIscyxuO2lmKHQ9PT1sYSl7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PWhhKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnIqKGFbMV0tYVswXSkrYVswXSxpKnIqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcz0wLG49NDtzPGU7cysrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtyW3NdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcz10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHIsMCxzLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IocywwKX19bGV0IHVhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4gdWFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscj0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3IqKjMsMyphKnIqKjIsMyphKioyKnIsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG49Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cy5nZXRSYXcoIkNTIil8fHMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczppLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJhY2tncm91bmQ9cy5oYXMoIkJhY2tncm91bmQiKT9uLmdldFJnYihzLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3Qgbz1zLmdldFJhdygiRnVuY3Rpb24iKSxnPW8/YS5jcmVhdGVGcm9tQXJyYXkobyk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYz17Yml0c1BlckNvb3JkaW5hdGU6cy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpzLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOnMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpzLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOmcsY29sb3JTcGFjZTpuLG51bUNvbXBzOmc/MTpuLm51bUNvbXBzfSxsPW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYyk7bGV0IGg9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgQ2E6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKGwpO2JyZWFrO2Nhc2UgQmE6Y29uc3QgZT0wfHMuZ2V0KCJWZXJ0aWNlc1BlclJvdyIpO2lmKGU8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcobCxlKTticmVhaztjYXNlIFFhOnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhsKTtoPSEwO2JyZWFrO2Nhc2UgRWE6dGhpcy5fZGVjb2RlVHlwZTdTaGFkaW5nKGwpO2g9ITA7YnJlYWs7ZGVmYXVsdDp1bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgbWVzaCB0eXBlLiIpfWlmKGgpe3RoaXMuX3VwZGF0ZUJvdW5kcygpO2ZvcihsZXQgZT0wLHQ9dGhpcy5maWd1cmVzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuX2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpfXRoaXMuX3VwZGF0ZUJvdW5kcygpO3RoaXMuX3BhY2tEYXRhKCl9X2RlY29kZVR5cGU0U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1bXSxyPVtdO2xldCBzPTA7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBuPWUucmVhZEZsYWcoKSxvPWUucmVhZENvb3JkaW5hdGUoKSxnPWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09cyl7aWYoISgwPD1uJiZuPD0yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChuKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTpyLnB1c2goci5hdCgtMiksci5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6ci5wdXNoKHIuYXQoLTMpLHIuYXQoLTEpKTtzPTF9YS5wdXNoKG4pfXIucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKG8pO2kucHVzaChnKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2goaS5sZW5ndGgpO2kucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkociksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzg6MTI7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVsxMV09bis3O2FbNF09bisxO2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO2w9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09bDthWzExXT1uKzM7YVs0XT1jO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzExXT1uKzM7YVs0XT1hWzJdO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX1hWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSk7YVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pO2FbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pO2FbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU3IGZsYWciKTtjb25zdCBuPXQubGVuZ3RoO2ZvcihsZXQgaT0wLGE9MCE9PXM/MTI6MTY7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVs5XT1uKzEzO2FbMTBdPW4rMTQ7YVsxMV09bis3O2FbNF09bisxO2FbNV09bisxMjthWzZdPW4rMTU7YVs3XT1uKzg7YVswXT1uO2FbMV09bisxMTthWzJdPW4rMTA7YVszXT1uKzk7clsyXT1vKzE7clszXT1vKzI7clswXT1vO3JbMV09byszO2JyZWFrO2Nhc2UgMTpnPWFbMTJdO2M9YVsxM107bD1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1sO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YzthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clsyXTtjPXJbM107clsyXT1jO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAyOmc9YVsxNV07Yz1hWzExXTthWzEyXT1hWzNdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVs3XTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbM107clsyXT1yWzFdO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzFdO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YVsyXTthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1hWzNdO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O3JbMl09clswXTtyWzNdPW87clswXT1yWzFdO3JbMV09bysxfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShyKX0pfX1fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl7Y29uc3QgdD10aGlzLmZpZ3VyZXNbZV07YXNzZXJ0KCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTtjb25zdCBpPXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj10LmNvb3JkcyxzPXQuY29sb3JzLG49TWF0aC5taW4oaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxvPU1hdGgubWluKGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSksZz1NYXRoLm1heChpW3JbMF1dWzBdLGlbclszXV1bMF0saVtyWzEyXV1bMF0saVtyWzE1XV1bMF0pLGM9TWF0aC5tYXgoaVtyWzBdXVsxXSxpW3JbM11dWzFdLGlbclsxMl1dWzFdLGlbclsxNV1dWzFdKTtsZXQgbD1NYXRoLmNlaWwoKGctbikqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbMl0tdGhpcy5ib3VuZHNbMF0pKTtsPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGwpKTtsZXQgaD1NYXRoLmNlaWwoKGMtbykqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0pKTtoPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTtjb25zdCBDPWwrMSxRPW5ldyBJbnQzMkFycmF5KChoKzEpKkMpLEU9bmV3IEludDMyQXJyYXkoKGgrMSkqQyk7bGV0IHU9MDtjb25zdCBkPW5ldyBVaW50OEFycmF5KDMpLGY9bmV3IFVpbnQ4QXJyYXkoMykscD1hW3NbMF1dLG09YVtzWzFdXSx5PWFbc1syXV0sdz1hW3NbM11dLGI9Z2V0QihoKSxEPWdldEIobCk7Zm9yKGxldCBlPTA7ZTw9aDtlKyspe2RbMF09KHBbMF0qKGgtZSkreVswXSplKS9ofDA7ZFsxXT0ocFsxXSooaC1lKSt5WzFdKmUpL2h8MDtkWzJdPShwWzJdKihoLWUpK3lbMl0qZSkvaHwwO2ZbMF09KG1bMF0qKGgtZSkrd1swXSplKS9ofDA7ZlsxXT0obVsxXSooaC1lKSt3WzFdKmUpL2h8MDtmWzJdPShtWzJdKihoLWUpK3dbMl0qZSkvaHwwO2ZvcihsZXQgdD0wO3Q8PWw7dCsrLHUrKyl7aWYoISgwIT09ZSYmZSE9PWh8fDAhPT10JiZ0IT09bCkpY29udGludWU7bGV0IHM9MCxuPTAsbz0wO2ZvcihsZXQgYT0wO2E8PTM7YSsrKWZvcihsZXQgZz0wO2c8PTM7ZysrLG8rKyl7Y29uc3QgYz1iW2VdW2FdKkRbdF1bZ107cys9aVtyW29dXVswXSpjO24rPWlbcltvXV1bMV0qY31RW3VdPWkubGVuZ3RoO2kucHVzaChbcyxuXSk7RVt1XT1hLmxlbmd0aDtjb25zdCBnPW5ldyBVaW50OEFycmF5KDMpO2dbMF09KGRbMF0qKGwtdCkrZlswXSp0KS9sfDA7Z1sxXT0oZFsxXSoobC10KStmWzFdKnQpL2x8MDtnWzJdPShkWzJdKihsLXQpK2ZbMl0qdCkvbHwwO2EucHVzaChnKX19UVswXT1yWzBdO0VbMF09c1swXTtRW2xdPXJbM107RVtsXT1zWzFdO1FbQypoXT1yWzEyXTtFW0MqaF09c1syXTtRW0MqaCtsXT1yWzE1XTtFW0MqaCtsXT1zWzNdO3RoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOlEsY29sb3JzOkUsdmVydGljZXNQZXJSb3c6Q319X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0saT1lLGE9dDtmb3IobGV0IHI9MSxzPXRoaXMuY29vcmRzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPXRoaXMuY29vcmRzW3JdWzBdLG49dGhpcy5jb29yZHNbcl1bMV07ZT1lPnM/czplO3Q9dD5uP246dDtpPWk8cz9zOmk7YT1hPG4/bjphfXRoaXMuYm91bmRzPVtlLHQsaSxhXX1fcGFja0RhdGEoKXtsZXQgZSx0LGksYTtjb25zdCByPXRoaXMuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXTtzW2krK109dFswXTtzW2krK109dFsxXX10aGlzLmNvb3Jkcz1zO2NvbnN0IG49dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKm4ubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtvW2krK109dFswXTtvW2krK109dFsxXTtvW2krK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGc9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV0scj10LmNvb3JkcyxzPXQuY29sb3JzO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtyW2ldKj0yO3NbaV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09MHx8ZVszXS1lWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBNZXNoU2hhZGluZyBib3VuZHM6IFske2V9XS5gKTtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLGUsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIER1bW15U2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2dldElSKCl7cmV0dXJuWyJEdW1teSJdfX1mdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIoZSx0LGkpe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHM9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIXN8fHNbMl0tc1swXT09MHx8c1szXS1zWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgZz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsaSxlLHIscyxuLG8sZyxjXX1jb25zdCBkYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxmYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30scGE9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbWE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHlhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx3YT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sYmE9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxGYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFNhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxrYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFJhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sTmE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sR2E9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxNYT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0seGE9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sTGE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEhhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxKYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdmE9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFlhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxLYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFRhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxxYT1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sT2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFBhPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGphPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxYYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sVmE9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFphPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxfYT1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6YT17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sJGE9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEFyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxlcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHRyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxpcj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHJyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6VmEsYmFzZVdpZHRoczpLYSxiYXNlTWFwcGluZzpUYSxtZXRyaWNzOlphfTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpxYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6T2F9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmphLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpYYX07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlBhLGJhc2VXaWR0aHM6SGEsYmFzZU1hcHBpbmc6SmEsbWV0cmljczpXYX07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGF9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpZYX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpiYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6RGF9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmRhLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczpmYX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOnlhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp3YX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6cGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOm1hfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczppcixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6YXJ9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOl9hLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczp6YX07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmVyLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp0cn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6JGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOkFyfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk1hLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6VGEsbWV0cmljczpVYX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpGYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6U2F9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOk5hLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpHYX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczprYSxiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphLG1ldHJpY3M6UmF9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczppLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9pLm1hcCgoKGUsdCk9PmUqclt0XSkpOmk7bGV0IG4sbz0tMjtjb25zdCBnPVtdO2Zvcihjb25zdFtlLHRdb2YgYS5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe24ucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO249W3NbdF1dO2cucHVzaChlLG4pfXJldHVybiBnfShlKSxpPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2kuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtpLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtpLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2kuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2kuc2V0KCJXIix0KTtpLnNldCgiRmlyc3RDaGFyIix0WzBdKTtpLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2kuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gaX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChzci5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHNyLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoc3IuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChzci5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHNyLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTtpZih0aGlzLmFjY2VwdChzci5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoc3IuTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgaT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTt0aGlzLmV4cGVjdChzci5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1pO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBzcj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihzci5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihzci5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7aVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCBhPWkuam9pbigiIik7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKGEpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBpPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHtpfWApO3JldHVybiBpfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNGPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I1MoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjaygpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jUzxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGk9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFpKXtpPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsaSl9aS5hZGQodCk7cmV0dXJuIShpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2spfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNGLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI0YuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNrP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI0YuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1nZXRDYWNoZWQoZSl7bGV0IHQ7ZSBpbnN0YW5jZW9mIFJlZj90PWU6ZSBpbnN0YW5jZW9mIERpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodD1lLmRpY3Q/Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGk7ZSBpbnN0YW5jZW9mIFJlZj9pPWU6ZSBpbnN0YW5jZW9mIERpY3Q/aT1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaT1lLmRpY3Q/Lm9iaklkKTtpJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsaSx0KX1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGksYSl7bGV0IHIscyxuPTE7Zm9yKHI9MCxzPWUubGVuZ3RoO3I8cztyKyspbio9ZVtyXTtuKj10O2NvbnN0IG89bmV3IEFycmF5KG4pO2xldCBnPTAsYz0wO2NvbnN0IGw9MS8oMioqaS0xKSxoPWEuZ2V0Qnl0ZXMoKG4qaSs3KS84KTtsZXQgQz0wO2ZvcihyPTA7cjxuO3IrKyl7Zm9yKDtnPGk7KXtjPDw9ODtjfD1oW0MrK107Zys9OH1nLT1pO29bcl09KGM+PmcpKmw7YyY9KDE8PGcpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pe2NvbnN0IGE9aS5kaWN0fHxpO3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbk9iajppfSl7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBpKWEucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsaSxyKXtmb3IobGV0IHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspYVtzXShlLHQsaSxyK3MpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7ZnVuY3Rpb24gdG9NdWx0aUFycmF5KGUpe2NvbnN0IHQ9ZS5sZW5ndGgsaT1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKz0yKWlbYSsrXT1bZVtyXSxlW3IrMV1dO3JldHVybiBpfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxpLGEscil7cmV0dXJuIGErKHItYSkvKGktdCkqKGUtdCl9bGV0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG49ci5sZW5ndGgvMixvPXMubGVuZ3RoLzI7cj10b011bHRpQXJyYXkocik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgZz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlNpemUiKSksYz1hLmdldCgiQml0c1BlclNhbXBsZSIpLGw9YS5nZXQoIk9yZGVyIil8fDE7MSE9PWwmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2wpO2xldCBoPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGgpaD10b011bHRpQXJyYXkoaCk7ZWxzZXtoPVtdO2ZvcihsZXQgZT0wO2U8bjsrK2UpaC5wdXNoKFswLGdbZV0tMV0pfWxldCBDPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRGVjb2RlIikpO0M9Qz90b011bHRpQXJyYXkoQyk6cztjb25zdCBRPXRoaXMuZ2V0U2FtcGxlQXJyYXkoZyxvLGMsaSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsaSxhKXtjb25zdCBjPTE8PG4sbD1uZXcgRmxvYXQ2NEFycmF5KGMpLEU9bmV3IFVpbnQzMkFycmF5KGMpO2xldCB1LGQ7Zm9yKGQ9MDtkPGM7ZCsrKWxbZF09MTtsZXQgZj1vLHA9MTtmb3IodT0wO3U8bjsrK3Upe2NvbnN0IGk9clt1XVswXSxhPXJbdV1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3VdLGkpLGEpLGksYSxoW3VdWzBdLGhbdV1bMV0pO2NvbnN0IG49Z1t1XTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksbi0xKTtjb25zdCBvPXM8bi0xP01hdGguZmxvb3Iocyk6cy0xLEM9bysxLXMsUT1zLW8sbT1vKmYseT1tK2Y7Zm9yKGQ9MDtkPGM7ZCsrKWlmKGQmcCl7bFtkXSo9UTtFW2RdKz15fWVsc2V7bFtkXSo9QztFW2RdKz1tfWYqPW47cDw8PTF9Zm9yKGQ9MDtkPG87KytkKXtsZXQgZT0wO2Zvcih1PTA7dTxjO3UrKyllKz1RW0VbdV0rZF0qbFt1XTtlPWludGVycG9sYXRlKGUsMCwxLENbZF1bMF0sQ1tkXVsxXSk7aVthK2RdPU1hdGgubWluKE1hdGgubWF4KGUsc1tkXVswXSksc1tkXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMxIikpfHxbMV0scz1pLmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IG89bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxpLHIpe2NvbnN0IGc9MT09PXM/ZVt0XTplW3RdKipzO2ZvcihsZXQgZT0wO2U8bzsrK2UpaVtyK2VdPWFbZV0rZypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCByPVtdO2Zvcihjb25zdCBhIG9mIGkuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihhKX0pKTtjb25zdCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQm91bmRzIikpLG49dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGksZyl7Y29uc3QgYz1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsaSl7ZT5pP2U9aTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGFbMF0sYVsxXSksbD1zLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8bCYmIShjPHNbaF0pOysraCk7bGV0IEM9YVswXTtoPjAmJihDPXNbaC0xXSk7bGV0IFE9YVsxXTtoPHMubGVuZ3RoJiYoUT1zW2hdKTtjb25zdCBFPW5bMipoXSx1PW5bMipoKzFdO29bMF09Qz09PVE/RTpFKyhjLUMpKih1LUUpLyhRLUMpO3JbaF0obywwLGksZyl9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtjb25zdCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IG49bmV3IFBvc3RTY3JpcHRMZXhlcihpKSxvPW5ldyBQb3N0U2NyaXB0UGFyc2VyKG4pLnBhcnNlKCk7aWYodCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKG8scixzKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IGc9cy5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKG8pLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgQz04MTkyO2NvbnN0IFE9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxpLGEpe2xldCByLG4sbz0iIjtjb25zdCBFPVE7Zm9yKHI9MDtyPGM7cisrKXtuPWVbdCtyXTtFW3JdPW47bys9bisiXyJ9Y29uc3QgdT1oW29dO2lmKHZvaWQgMCE9PXUpe2kuc2V0KHUsYSk7cmV0dXJufWNvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShnKSxmPWwuZXhlY3V0ZShFKSxwPWYubGVuZ3RoLWc7Zm9yKHI9MDtyPGc7cisrKXtuPWZbcCtyXTtsZXQgZT1zWzIqcl07aWYobjxlKW49ZTtlbHNle2U9c1syKnIrMV07bj5lJiYobj1lKX1kW3JdPW59aWYoQz4wKXtDLS07aFtvXT1kfWkuc2V0KGQsYSl9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgaT10Lmxlbmd0aC1lLGE9ZS0xO2E+PTA7YS0tLGkrKyl0LnB1c2godFtpXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGk9dGhpcy5zdGFjayxhPWkubGVuZ3RoLWUscj1pLmxlbmd0aC0xLHM9YSsodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPWEsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9YSx0PXMtMTtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPXMsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgaT0wO2NvbnN0IGE9dGhpcy5vcGVyYXRvcnMscj1hLmxlbmd0aDtsZXQgcyxuLG87Zm9yKDtpPHI7KXtzPWFbaSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpc3dpdGNoKHMpe2Nhc2UianoiOm89dC5wb3AoKTtuPXQucG9wKCk7bnx8KGk9byk7YnJlYWs7Y2FzZSJqIjpuPXQucG9wKCk7aT1uO2JyZWFrO2Nhc2UiYWJzIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKG4pKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobitvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuJiZvKTp0LnB1c2gobiZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtuPXQucG9wKCk7bj1NYXRoLmF0YW4yKG4sbykvTWF0aC5QSSoxODA7bjwwJiYobis9MzYwKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO249dC5wb3AoKTtuPjA/dC5wdXNoKG48PG8pOnQucHVzaChuPj5vKTticmVhaztjYXNlImNlaWxpbmciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG4pKTticmVhaztjYXNlImNvcHkiOm49dC5wb3AoKTt0LmNvcHkobik7YnJlYWs7Y2FzZSJjb3MiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6bj0wfHQucG9wKCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG49PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihuKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vb3wwKTticmVhaztjYXNlImluZGV4IjpuPXQucG9wKCk7dC5pbmRleChuKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPD1vKTticmVhaztjYXNlImxuIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG4pKTticmVhaztjYXNlImxvZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKG4pKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4hPT1vKTticmVhaztjYXNlIm5lZyI6bj10LnBvcCgpO3QucHVzaCgtbik7YnJlYWs7Y2FzZSJub3QiOm49dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuP3QucHVzaCghbik6dC5wdXNoKH5uKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG58fG8pOnQucHVzaChufG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnJvbGwobixvKTticmVhaztjYXNlInJvdW5kIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobikpO2JyZWFrO2Nhc2Uic2luIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChuKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4tbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm49dC5wb3AoKTtuPW48MD9NYXRoLmNlaWwobik6TWF0aC5mbG9vcihuKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiE9PW8pOnQucHVzaChuXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSxhLHIpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWk7dGhpcy5taW49YTt0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBpPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxhPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGksYSl9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsaSl7Y29uc3QgYT1bXSxyPVtdLHM9dC5sZW5ndGg+PjEsbj1pLmxlbmd0aD4+MTtsZXQgbyxnLGMsbCxoLEMsUSxFLHU9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKWEucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe0U9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIEUpc3dpdGNoKEUpe2Nhc2UiYWRkIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2Uic3ViIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Qz1hLnBvcCgpO2EucHVzaChoLEMpO2JyZWFrO2Nhc2UicG9wIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2EucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO289Yy5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtoPWFbYS5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLW8tMV09UTthLnB1c2goUSk7ci5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJkdXAiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7Yz1hLnBvcCgpO2EucHVzaChidWlsZE1pbk9wZXJhdGlvbihjLGVbdCsxXSkpO3QrPTY7YnJlYWt9aD1hLmF0KC0xKTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtsPWEucG9wKCk7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWwudHlwZXx8ImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO2c9bC5udW1iZXI7bz1jLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7Zz0oZyVvK28pJW87aWYoMD09PWcpYnJlYWs7YS5wdXNoKC4uLmEuc3BsaWNlKGEubGVuZ3RoLW8sby1nKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIGEucHVzaChuZXcgQXN0TGl0ZXJhbChFKSl9aWYoYS5sZW5ndGghPT1uKXJldHVybiBudWxsO2NvbnN0IGQ9W107Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7ZC5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWFbZV0scj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQocik7Y29uc3Qgcz1pWzIqZV0sbj1pWzIqZSsxXSxvPVtyLnRvU3RyaW5nKCldO2lmKHM+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixzLCIsICIpO28ucHVzaCgiKSIpfWlmKG48dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixuLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7ZC5wdXNoKG8uam9pbigiIikpfXJldHVybiBkLmpvaW4oIlxuIil9fWNvbnN0IG5yPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvcj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBncj1bXSxJcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7Z3IubGVuZ3RoPXI7SXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtncltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9bnJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1vclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7SXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixsPWMsaD1sO2xldCBDLFE9bDtmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1JcltzXT9JcltzXT1ROlE9SXJbc107UT1sO2ZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiRU4iPT09Qz9JcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09QyYmIkwiIT09QyYmIkFMIiE9PUN8fChRPUMpfWZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiQUwiPT09QyYmKElyW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1JcltzXSYmIkVOIj09PUlyW3MtMV0mJiJFTiI9PT1JcltzKzFdJiYoSXJbc109IkVOIik7IkNTIiE9PUlyW3NdfHwiRU4iIT09SXJbcy0xXSYmIkFOIiE9PUlyW3MtMV18fElyW3MrMV0hPT1JcltzLTFdfHwoSXJbc109SXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1JcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09SXJbZV07LS1lKUlyW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1JcltlXTsrK2UpSXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe0M9SXJbc107IldTIiE9PUMmJiJFUyIhPT1DJiYiRVQiIT09QyYmIkNTIiE9PUN8fChJcltzXT0iT04iKX1RPWw7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdOyJFTiI9PT1DP0lyW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09QyYmIkwiIT09Q3x8KFE9Qyl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1JcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChJcixzKzEsIk9OIik7bGV0IHQ9bDtzPjAmJih0PUlyW3MtMV0pO2xldCBpPWg7ZSsxPHImJihpPUlyW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKElyLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PUlyW3NdJiYoSXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1DP2dbc10rPTE6IkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9Mik6IkwiIT09QyYmIkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoZ3IsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhncixlLGcubGVuZ3RoKX1mb3Iocz0wLG49Z3IubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9Z3Jbc107IjwiIT09ZSYmIj4iIT09ZXx8KGdyW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoZ3Iuam9pbigiIiksYSl9Y29uc3QgY3I9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sbHI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGhyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LENyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxRcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmNyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOmxyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6aHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Q3IsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOmNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6bHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmhyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpjcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOmxyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6aHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Q3IsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6bHIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpocixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmxyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmhyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpjcn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksRXI9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxsPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9bD9gICR7bH1gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PVFyLmdldChlKSxzPWx8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgbHI6cmV0dXJuIkJvbGQiO2Nhc2UgaHI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBDcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYoaC5zdHlsZT1yKTtzJiYoaC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPVFyLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksbCk7aC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9UXIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgRXIpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPVFyLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1Rci5nZXQocik7Yz0hMH1jb25zdCBsPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZDcnx8dCYmbHJ8fGkmJmhyfHxjcjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke2x9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6bCxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGg9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmaC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOkMsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsaCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7bH0ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpsLGJhc2VGb250TmFtZTphLHNyYzpoLmpvaW4oIiwiKSxzdHlsZTpDfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjUj0yMDQ4O3N0YXRpYyN5PUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNSJiZ0PD10aGlzLiNSKXJldHVybiExO2NvbnN0e01BWF9ESU06aX09dGhpcztpZihlPml8fHQ+aSlyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLiNSKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI1I9TWF0aC5tYXgodGhpcy4jUixNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jUj10aGlzLl9ndWVzc01heCh0aGlzLiNSLGksMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuI1IqKjIpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNSLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jeT10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksYT1pLmdldENvbnRleHQoIjJkIik7YS5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCByPWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107aS53aWR0aD1pLmhlaWdodD0xO3JldHVybiAwIT09cn1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsaSxhKXtmb3IoO2UraSsxPHQ7KXtjb25zdCBpPU1hdGguZmxvb3IoKGUrdCkvMikscj1hfHxpO3RoaXMuX2FyZUdvb2REaW1zKGkscik/ZT1pOnQ9aX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9PWU7aWYodCppKjQ+eXQpe2NvbnN0IGU9dGhpcy4jTigpO2lmKGUpcmV0dXJuIGV9Y29uc3QgYT10aGlzLl9lbmNvZGVCTVAoKTtsZXQgcixzO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe3I9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOlthLmJ1ZmZlcl19KTtzPXIuZGVjb2RlKCkuY2F0Y2goKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkpLmZpbmFsbHkoKCgpPT57ci5jbG9zZSgpfSkpfWVsc2Ugcz1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOm4sTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsZz1NYXRoLm1heCh0L28saS9vLE1hdGguc3FydCh0KmkvbikpLGM9TWF0aC5tYXgoZywyKSxsPU1hdGgucm91bmQoMTAqKGcrMS4yNSkpLzEwL2MsaD1NYXRoLmZsb29yKE1hdGgubG9nMihsKSksQz1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO0NbMF09YztDLnNwbGljZSgtMSwxLGwvKDE8PGgpKTtsZXQgUT10LEU9aTtjb25zdCB1PWF3YWl0IHM7bGV0IGQ9dS5pbWFnZXx8dTtmb3IoY29uc3QgZSBvZiBDKXtjb25zdCB0PVEsaT1FO1E9TWF0aC5mbG9vcihRL2UpLTE7RT1NYXRoLmZsb29yKEUvZSktMTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoUSxFKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGQsMCwwLHQsaSwwLDAsUSxFKTtkLmNsb3NlKCk7ZD1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfWUuZGF0YT1udWxsO2UuYml0bWFwPWQ7ZS53aWR0aD1RO2UuaGVpZ2h0PUU7cmV0dXJuIGV9I04oKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHtkYXRhOnQsd2lkdGg6aSxoZWlnaHQ6YSxraW5kOnJ9PWUscz1pKmEqNCxuPU1hdGguY2VpbChNYXRoLmxvZzIocy95dCkpLG89aT4+bixnPWE+Pm47bGV0IGMsbD1hO3RyeXtjPW5ldyBVaW50OEFycmF5KHMpfWNhdGNoe2xldCBlPU1hdGguZmxvb3IoTWF0aC5sb2cyKHMrMSkpO2Zvcig7Oyl0cnl7Yz1uZXcgVWludDhBcnJheSgyKiplLTEpO2JyZWFrfWNhdGNoe2UtPTF9bD1NYXRoLmZsb29yKCgyKiplLTEpLyg0KmkpKTtjb25zdCB0PWkqbCo0O3Q8Yy5sZW5ndGgmJihjPW5ldyBVaW50OEFycmF5KHQpKX1jb25zdCBoPW5ldyBVaW50MzJBcnJheShjLmJ1ZmZlciksQz1uZXcgVWludDMyQXJyYXkobypnKTtsZXQgUT0wLEU9MDtjb25zdCB1PU1hdGguY2VpbChhL2wpLGQ9YSVsPT0wP2E6YSVsO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0IGE9ZTx1LTE/bDpkOyh7c3JjUG9zOlF9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cixzcmM6dCxkZXN0Omgsd2lkdGg6aSxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6UX0pKTtmb3IobGV0IGU9MCx0PWE+Pm47ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxuKSppKTtmb3IobGV0IGU9MDtlPG87ZSsrKUNbRSsrXT10W2U8PG5dfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGcpKXtlLmRhdGE9QztlLndpZHRoPW87ZS5oZWlnaHQ9ZztlLmtpbmQ9UjtyZXR1cm4gbnVsbH1jb25zdCBmPW5ldyBPZmZzY3JlZW5DYW52YXMobyxnKTtmLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KEMuYnVmZmVyKSxvLGcpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Zi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9ZztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOml9PXRoaXMuX2ltZ0RhdGE7bGV0IGEscj10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxuPXMsbz0wO3N3aXRjaChpKXtjYXNlIFM6e2E9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGk9ZSs3Pj4zLG49aSszJi00O2lmKGkhPT1uKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IGE9MDtmb3IobGV0IHM9MCxvPXQqaTtzPG87cys9aSxhKz1uKWUuc2V0KHIuc3ViYXJyYXkocyxzK2kpLGEpO3I9ZX1icmVha31jYXNlIGs6YT0yNDtpZigzJmUpe2NvbnN0IGk9MyplLGE9aSszJi00LHM9YS1pLG49bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCppO2U8YTtlKz1pKXtjb25zdCB0PXIuc3ViYXJyYXkoZSxlK2kpO2ZvcihsZXQgZT0wO2U8aTtlKz0zKXtuW28rK109dFtlKzJdO25bbysrXT10W2UrMV07bltvKytdPXRbZV19bys9c31yPW59ZWxzZSBmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXJbZV07cltlXT1yW2UrMl07cltlKzJdPXR9YnJlYWs7Y2FzZSBSOmE9MzI7bz0zO249bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGk9bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7aS5zZXRVaW50MzIoMCwyNTUsITApO2kuc2V0VWludDMyKDQsNjUyODAsITApO2kuc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7aS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtpLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMig4LDY1MjgwLCEwKTtpLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBnPTA7Y29uc3QgYz00MCtuLmxlbmd0aCxsPTE0K2Mrcy5sZW5ndGgrci5sZW5ndGgsaD1uZXcgVWludDhBcnJheShsKSxDPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7Qy5zZXRVaW50MTYoZywxOTc3OCwhMCk7Zys9MjtDLnNldFVpbnQzMihnLGwsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMTQrYytzLmxlbmd0aCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLGMsITApO2crPTQ7Qy5zZXRJbnQzMihnLGUsITApO2crPTQ7Qy5zZXRJbnQzMihnLC10LCEwKTtnKz00O0Muc2V0VWludDE2KGcsMSwhMCk7Zys9MjtDLnNldFVpbnQxNihnLGEsITApO2crPTI7Qy5zZXRVaW50MzIoZyxvLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLHMubGVuZ3RoLzQsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O2guc2V0KG4sZyk7Zys9bi5sZW5ndGg7aC5zZXQocyxnKTtnKz1zLmxlbmd0aDtoLnNldChyLGcpO3JldHVybiBofX1jb25zdCB1cj0zMjg1Mzc3NTIwLGRyPTQyOTQ5MDE3NjAsZnI9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTp1cjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOnVyfXVwZGF0ZShlKXtsZXQgdCxpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTtpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPD0yNTUpdFtpKytdPXI7ZWxzZXt0W2krK109cj4+Pjg7dFtpKytdPTI1NSZyfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2k9dC5ieXRlTGVuZ3RofWNvbnN0IGE9aT4+MixyPWktNCphLHM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsYSk7bGV0IG49MCxvPTAsZz10aGlzLmgxLGM9dGhpcy5oMjtjb25zdCBsPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsQz0xMTYwMSxRPTEzNzE1O2ZvcihsZXQgZT0wO2U8YTtlKyspaWYoMSZlKXtuPXNbZV07bj1uKmwmZHJ8bipDJmZyO249bjw8MTV8bj4+PjE3O249bipoJmRyfG4qUSZmcjtnXj1uO2c9Zzw8MTN8Zz4+PjE5O2c9NSpnKzM4NjQyOTIxOTZ9ZWxzZXtvPXNbZV07bz1vKmwmZHJ8bypDJmZyO289bzw8MTV8bz4+PjE3O289bypoJmRyfG8qUSZmcjtjXj1vO2M9Yzw8MTN8Yz4+PjE5O2M9NSpjKzM4NjQyOTIxOTZ9bj0wO3N3aXRjaChyKXtjYXNlIDM6bl49dFs0KmErMl08PDE2O2Nhc2UgMjpuXj10WzQqYSsxXTw8ODtjYXNlIDE6bl49dFs0KmFdO249bipsJmRyfG4qQyZmcjtuPW48PDE1fG4+Pj4xNztuPW4qaCZkcnxuKlEmZnI7MSZhP2dePW46Y149bn10aGlzLmgxPWc7dGhpcy5oMj1jfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJmRyfDM2MDQ1KmUmZnI7dD00MjgzNTQzNTExKnQmZHJ8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmZHIpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZkcnw2MDQ5OSplJmZyO3Q9MzMwMTg4MjM2Nip0JmRyfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJmRyKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxpLGEscil7bGV0IHM9ZTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoLTE7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO3M9c1tpXXx8PVtdfXNbdC5hdCgtMSldPXtjaGVja0ZuOmksaXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnJ9fWNvbnN0IHByPVtdO2FkZFN0YXRlKHByLFt4QSxIQSxBdCxMQV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1BdDtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPXItMSxnPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGM9MDtjb25zdCBsPVtdO2xldCBoPTAsQz0xLFE9MTtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbisoZTw8MildLGk9YVtvKyhlPDwyKV1bMF07aWYoQytpLndpZHRoPjFlMyl7Yz1NYXRoLm1heChjLEMpO1ErPWgrMjtDPTA7aD0wfWwucHVzaCh7dHJhbnNmb3JtOnQseDpDLHk6USx3Omkud2lkdGgsaDppLmhlaWdodH0pO0MrPWkud2lkdGgrMjtoPU1hdGgubWF4KGgsaS5oZWlnaHQpfWNvbnN0IEU9TWF0aC5tYXgoYyxDKSsxLHU9UStoKzEsZD1uZXcgVWludDhBcnJheShFKnUqNCksZj1FPDwyO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxpPWxbZV0udzw8MjtsZXQgcj0wLHM9bFtlXS54K2xbZV0ueSpFPDwyO2Quc2V0KHQuc3ViYXJyYXkoMCxpKSxzLWYpO2ZvcihsZXQgYT0wLG49bFtlXS5oO2E8bjthKyspe2Quc2V0KHQuc3ViYXJyYXkocixyK2kpLHMpO3IrPWk7cys9Zn1kLnNldCh0LnN1YmFycmF5KHItaSxyKSxzKTtmb3IoO3M+PTA7KXt0W3MtNF09dFtzXTt0W3MtM109dFtzKzFdO3Rbcy0yXT10W3MrMl07dFtzLTFdPXRbcyszXTt0W3MraV09dFtzK2ktNF07dFtzK2krMV09dFtzK2ktM107dFtzK2krMl09dFtzK2ktMl07dFtzK2krM109dFtzK2ktMV07cy09Zn19Y29uc3QgcD17d2lkdGg6RSxoZWlnaHQ6dX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShkLmJ1ZmZlciksRSx1KSwwLDApO3AuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7cC5kYXRhPW51bGx9ZWxzZXtwLmtpbmQ9UjtwLmRhdGE9ZH1pLnNwbGljZShzLDQqZyxldCk7YS5zcGxpY2Uocyw0KmcsW3AsbF0pO3JldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLF9lLExBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1fZTtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xO2xldCBnPU1hdGguZmxvb3IoKHQtcykvNCk7aWYoZzwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBjLGwsaD0hMTtjb25zdCBDPWFbb11bMF0sUT1hW25dWzBdLEU9YVtuXVsxXSx1PWFbbl1bMl0sZD1hW25dWzNdO2lmKEU9PT11KXtoPSEwO2M9bis0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGc7dCsrLGMrPTQsZSs9NCl7bD1hW2NdO2lmKGFbZV1bMF0hPT1DfHxsWzBdIT09UXx8bFsxXSE9PUV8fGxbMl0hPT11fHxsWzNdIT09ZCl7dDwxMD9oPSExOmc9dDticmVha319fWlmKGgpe2c9TWF0aC5taW4oZywxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmcpO2M9bjtmb3IobGV0IHQ9MDt0PGc7dCsrLGMrPTQpe2w9YVtjXTtlW3Q8PDFdPWxbNF07ZVsxKyh0PDwxKV09bFs1XX1pLnNwbGljZShzLDQqZyxpdCk7YS5zcGxpY2Uocyw0KmcsW0MsUSxFLHUsZCxlXSl9ZWxzZXtnPU1hdGgubWluKGcsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8Zzt0Kyspe2w9YVtuKyh0PDwyKV07Y29uc3QgaT1hW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6aS5kYXRhLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGludGVycG9sYXRlOmkuaW50ZXJwb2xhdGUsY291bnQ6aS5jb3VudCx0cmFuc2Zvcm06bH0pfWkuc3BsaWNlKHMsNCpnLHplKTthLnNwbGljZShzLDQqZyxbZV0pfXJldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLCRlLExBXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxpPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbaV1bMV0mJjA9PT10W2ldWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6aWYoaVt0XSE9PUhBKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0yLHM9YVtyXVswXSxuPWFbcl1bM107cmV0dXJuIGFbdF1bMF09PT1zJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1uO2Nhc2UgMjppZihpW3RdIT09JGUpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1hW3ItMV1bMF0sZz1hW25dWzBdLGM9YVtuXVszXSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMWUzKTtpZihsPDMpcmV0dXJuIHQtKHQtcyklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtsZXQgQz1uO2ZvcihsZXQgZT0wO2U8bDtlKyssQys9NCl7Y29uc3QgdD1hW0NdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IFE9W28sZyxjLGhdO2kuc3BsaWNlKHMsNCpsLHR0KTthLnNwbGljZShzLDQqbCxRKTtyZXR1cm4gcysxfSkpO2FkZFN0YXRlKHByLFt0ZSxvZSxoZSxCZSxpZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PXRlO2Nhc2UgMTpyZXR1cm4gaVt0XT09PW9lO2Nhc2UgMjpyZXR1cm4gaVt0XT09PWhlO2Nhc2UgMzppZihpW3RdIT09QmUpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTMscz1hW3JdWzBdLG49YVtyXVsxXTtyZXR1cm4gYVt0XVswXT09PXMmJmFbdF1bMV09PT1uO2Nhc2UgNDpyZXR1cm4gaVt0XT09PWllfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTQsbj1yLTMsbz1yLTIsZz1yLTEsYz1yLGw9YVtuXVswXSxoPWFbbl1bMV07bGV0IEM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS81KSwxZTMpO2lmKEM8MylyZXR1cm4gdC0odC1zKSU1O2xldCBRPXM7aWYocz49NCYmaVtzLTRdPT09aVtuXSYmaVtzLTNdPT09aVtvXSYmaVtzLTJdPT09aVtnXSYmaVtzLTFdPT09aVtjXSYmYVtzLTRdWzBdPT09bCYmYVtzLTRdWzFdPT09aCl7QysrO1EtPTV9bGV0IEU9USs0O2ZvcihsZXQgZT0xO2U8QztlKyspe2kuc3BsaWNlKEUsMyk7YS5zcGxpY2UoRSwzKTtFKz0yfXJldHVybiBFKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsaT1lLmxlbmd0aCxhPXRoaXMuc3RhdGUscj10aGlzLm1hdGNoO2lmKCFhJiYhciYmdCsxPT09aSYmIXByW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9aTtyZXR1cm59Y29uc3Qgcz10aGlzLmNvbnRleHQ7Zm9yKDt0PGk7KXtpZihyKXtpZigoMCxyLml0ZXJhdGVGbikocyx0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsci5wcm9jZXNzRm4pKHMsdCsxKTtpPWUubGVuZ3RoO3I9bnVsbDthPW51bGw7aWYodD49aSlicmVha31hPShhfHxwcilbZVt0XV07aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe3MuaUN1cnI9dDt0Kys7aWYoIWEuY2hlY2tGbnx8KDAsYS5jaGVja0ZuKShzKSl7cj1hO2E9bnVsbH1lbHNlIGE9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPWE7dGhpcy5tYXRjaD1yO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJnU/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5vcHRpbWl6ZXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PUxBfHxlPT09aWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxpLGE9ITEpe2lmKGEpe3RoaXMuYWRkT3AoeEEpO3RoaXMuYWRkT3AoVUEsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09aSYmdGhpcy5hZGRPcChLZSxbIk9DIixpXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsW10pO2EmJnRoaXMuYWRkT3AoTEEpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoREEsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTppLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcj0wO3I8YTtyKyspc3dpdGNoKHRbcl0pe2Nhc2UgQXQ6Y2FzZSBldDpjYXNlIF9lOmNvbnN0IHQ9aVtyXVswXTshdC5jYWNoZWQmJnQuZGF0YT8uYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJmUucHVzaCh0LmRhdGEuYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBpPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1pO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOml9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWZ1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxpLGEpeyhlPXQrZSppKTwwP2U9MDplPmEmJihlPWEpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1yKnM7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgZz1pL3IsYz1hL3M7bGV0IGwsaCxDLFEsRT0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KHIpLGQ9aTtmb3IobD0wO2w8cjtsKyspdVtsXT1NYXRoLmZsb29yKGwqZyk7Zm9yKGw9MDtsPHM7bCsrKXtDPU1hdGguZmxvb3IobCpjKSpkO2ZvcihoPTA7aDxyO2grKyl7UT1DK3VbaF07b1tFKytdPWVbUV19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHNtYXNrOnI9bnVsbCxtYXNrOnM9bnVsbCxpc01hc2s6bj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSl7dGhpcy5pbWFnZT1pO2NvbnN0IGM9aS5kaWN0LGw9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaDtpZihsIGluc3RhbmNlb2YgTmFtZSloPWwubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGxbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYoaD10Lm5hbWUpfXN3aXRjaChoKXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxjb21wb25lbnRzQ291bnQ6aS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmkuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoaS5zdHJlYW0pKTtpLnN0cmVhbS5yZXNldCgpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmhhcygiU01hc2tJbkRhdGEiKX07YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6aS5iaXRzUGVyQ29tcG9uZW50PTE7aS5udW1Db21wcz0xfWxldCBDPWMuZ2V0KCJXIiwiV2lkdGgiKSxRPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihpLndpZHRoKSYmaS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGkuaGVpZ2h0KSYmaS5oZWlnaHQ+MCYmKGkud2lkdGghPT1DfHxpLmhlaWdodCE9PVEpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO0M9aS53aWR0aDtRPWkuaGVpZ2h0fWlmKEM8MXx8UTwxKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtDfSBvciBoZWlnaHQ6ICR7UX1gKTt0aGlzLndpZHRoPUM7dGhpcy5oZWlnaHQ9UTt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IEU9aS5iaXRzUGVyQ29tcG9uZW50O2lmKCFFKXtFPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIUUpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO0U9MX19dGhpcy5icGM9RTtpZighdGhpcy5pbWFnZU1hc2spe2xldCByPWMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpO2NvbnN0IHM9ISFyO2lmKHMpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnI9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cj1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnI9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLEUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PEUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcj10aGlzLmRlY29kZVtpXSxzPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8ocy1yKS9lOnMtcjt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9yOmUqcn19aWYocil0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtzLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9c31zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxsPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmwmJihsIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShsKT9nPWw6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnN9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8ciYmIShuPT09bykpaWYocil7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihyKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6cyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnI9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpSLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cyxiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cixpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnN9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sclt0XSxzKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1pKmEqcjtsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgZz1pKnIsYz0oMTw8dCktMTtsZXQgbCxoLEM9MDtpZigxPT09dCl7bGV0IHQsaSxyO2ZvcihsZXQgcz0wO3M8YTtzKyspe2k9QysoLTgmZyk7cj1DK2c7Zm9yKDtDPGk7KXtoPWVbbysrXTtuW0NdPWg+PjcmMTtuW0MrMV09aD4+NiYxO25bQysyXT1oPj41JjE7bltDKzNdPWg+PjQmMTtuW0MrNF09aD4+MyYxO25bQys1XT1oPj4yJjE7bltDKzZdPWg+PjEmMTtuW0MrN109MSZoO0MrPTh9aWYoQzxyKXtoPWVbbysrXTt0PTEyODtmb3IoO0M8cjspe25bQysrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihDPTAsbD1zO0M8bDsrK0Mpe2lmKEMlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcj1oPj5hO3I8MD9yPTA6cj5jJiYocj1jKTtuW0NdPXI7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1hc3luYyBmaWxsT3BhY2l0eShlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsbCxoLEM7aWYocyl7Zz1zLndpZHRoO2M9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKGw9MCxoPWcqYztsPGg7KytsKW9bbF09MjU1LW9bbF07Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihsPTAsaD10Kmk7bDxoOysrbCl7bGV0IHQ9MDtjb25zdCBpPWwqZTtmb3IoQz0wO0M8ZTsrK0Mpe2NvbnN0IGU9cltpK0NdLGE9MipDO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW2xdPXR9fX1pZihvKWZvcihsPTAsQz0zLGg9dCphO2w8aDsrK2wsQys9NCllW0NdPW9bbF07ZWxzZSBmb3IobD0wLEM9MyxoPXQqYTtsPGg7KytsLEMrPTQpZVtDXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxzPXJbMF0sbj1yWzFdLG89clsyXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1zKSphK3M7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnMqZys3Pj4zLGw9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1SO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKm4qNCx7fSk7cmV0dXJuIHQ/bD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UociwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoUixpLGEsZSk6cn1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9UzoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9ayk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcz1hd2FpdCB0aGlzLiNHKG4sbyk7aWYocylyZXR1cm4gcztjb25zdCBnPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmcsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8sZyk7ci5raW5kPWU7ci5kYXRhPWc7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1TLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhbCl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuI0coaSxhKTtpZih0KXJldHVybiB0O2NvbnN0IHI9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoUixpLGEscil9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6ci5raW5kPWs7ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6ITB9KTtyZXR1cm4gbD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn19fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qYyx7aW50ZXJuYWw6ITB9KSxDPTB8aC5sZW5ndGgvYyphL28sUT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IEUsdSxkLGYscCxtO2lmKHQmJiFsKXtkPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKTtmPWQuZ2V0Q29udGV4dCgiMmQiKTtwPWYuY3JlYXRlSW1hZ2VEYXRhKGksYSk7bT1wLmRhdGF9ci5raW5kPVI7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhbHx8KG09bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSo0KSk7RT0xO3U9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShtLGksYSxDLFEpfWVsc2V7aWYoIXR8fGwpe3Iua2luZD1rO209bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSozKTtFPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkobS5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO0U9MX11PSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKFEpO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKG0sbixvLGksYSxDLGcsUSxFKTt1JiZ0aGlzLnVuZG9QcmVibGVuZChtLGksQyk7aWYodCYmIWwpe2YucHV0SW1hZ2VEYXRhKHAsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmksaGVpZ2h0OmEsYml0bWFwOmQudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19ci5kYXRhPW07cmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGk9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5icGMscz1pKnQqcis3Pj4zLG49YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGEqcyx7aW50ZXJuYWw6ITB9KSxvPXRoaXMuZ2V0Q29tcG9uZW50cyhuKTtsZXQgZyxjO2lmKDE9PT1yKXtjPWkqYTtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihnPTA7ZzxjOysrZyllW2ddPW9bZ10tMSYyNTU7ZWxzZSBmb3IoZz0wO2c8YzsrK2cpZVtnXT0yNTUmLW9bZ107cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG8pO2M9aSphO2NvbnN0IGw9MjU1LygoMTw8ciktMSk7Zm9yKGc9MDtnPGM7KytnKWVbZ109bCpvW2ddfWNyZWF0ZUJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxzPXIuZ2V0Q29udGV4dCgiMmQiKTtsZXQgbjtpZihlPT09UiluPW5ldyBJbWFnZURhdGEoYSx0LGkpO2Vsc2V7bj1zLmNyZWF0ZUltYWdlRGF0YSh0LGkpO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShuLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXMucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksYml0bWFwOnIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjRyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRUcmFuc2ZlcmFibGVJbWFnZSgpO3JldHVybiBpP3tkYXRhOm51bGwsd2lkdGg6ZSxoZWlnaHQ6dCxiaXRtYXA6aSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfTpudWxsfWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKHN8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIG47YXNzZXJ0KG4gaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobil9fWNvbnN0IG1yPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSx5cj0xLHdyPTIsYnI9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGUsdCl7dC5vYmpJZCYmZS5hZGREZXBlbmRlbmN5KHQub2JqSWQpO2UuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQsdC5oYXNNYXNrKTt0LmZuPT09X2UmJnQuYXJnc1swXT8uY291bnQ+MCYmdC5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnIsYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1zO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8bXI7dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyk7SnBlZ1N0cmVhbS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGk9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCBhPVtlXSxyPXRoaXMueHJlZjtmb3IoO2EubGVuZ3RoOyl7Y29uc3QgZT1hLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcz1lLmdldCgiWE9iamVjdCIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBzLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihpLmhhcyhlKSljb250aW51ZTt0cnl7ZT1yLmZldGNoKGUpfWNhdGNoKHQpe2kucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmaS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFpLmhhcyh0Lm9iaklkKSkpe2EucHVzaCh0KTt0Lm9iaklkJiZpLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGkpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMjTShlKXtjb25zdCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHQuYXJyYXlCdWZmZXIoKSl9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2k9e2NNYXBEYXRhOmF3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH19ZWxzZSBpPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsaSk7cmV0dXJuIGl9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBpPVRpKClbZV07bGV0IGE7dHJ5e2E9bnVsbCE9PXRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsP2F3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHtpfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoU3RhbmRhcmRGb250RGF0YSIse2ZpbGVuYW1lOml9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLGEpO3JldHVybiBuZXcgU3RyZWFtKGEpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10LmRpY3QsZz1sb29rdXBNYXRyaXgoby5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbCxoO28uaGFzKCJPQyIpJiYobD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKG8uZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1sJiZhLmFkZE9wKEtlLFsiT0MiLGxdKTtjb25zdCBDPW8uZ2V0KCJHcm91cCIpO2lmKEMpe2g9e21hdHJpeDpnLGJib3g6YyxzbWFzazppLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShDLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7aC5pc29sYXRlZD1DLmdldCgiSSIpfHwhMTtoLmtub2Nrb3V0PUMuZ2V0KCJLIil8fCExO2lmKEMuaGFzKCJDUyIpKXtjb25zdCBpPUMuZ2V0UmF3KCJDUyIpLGE9Q29sb3JTcGFjZS5nZXRDYWNoZWQoaSx0aGlzLnhyZWYsbik7dD1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6aSxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl9fWlmKGk/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtpLmJhY2tkcm9wPXQuZ2V0UmdiKGkuYmFja2Ryb3AsMCl9YS5hZGRPcChqZSxbaF0pfWNvbnN0IFE9Qz9bZyxudWxsXTpbZyxjXTthLmFkZE9wKFBlLFEpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOm8uZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6c30pO2EuYWRkT3AoV2UsW10pO0MmJmEuYWRkT3AoWGUsW2hdKTt2b2lkIDAhPT1sJiZhLmFkZE9wKFRlLFtdKX1fc2VuZEltZ0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8aT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLGEpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sYSl9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTppPSExLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OnIsbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IG89dC5kaWN0LGc9by5vYmpJZCxjPW8uZ2V0KCJXIiwiV2lkdGgiKSxsPW8uZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWN8fCJudW1iZXIiIT10eXBlb2YgY3x8IWx8fCJudW1iZXIiIT10eXBlb2YgbCl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGg9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWgmJmMqbD5oKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IEM7by5oYXMoIk9DIikmJihDPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO2xldCBRLEU7aWYoby5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPW8uZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxpPWMrNz4+MyxuPXQuZ2V0Qnl0ZXMoaSpsKSxoPW8uZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe1E9UERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6bix3aWR0aDpjLGhlaWdodDpsLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpoPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7US5jYWNoZWQ9ISFyO0U9W1FdO2EuYWRkSW1hZ2VPcHMoX2UsRSxDKTtpZihyKXtjb25zdCBlPXtmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59UT1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OmwsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoUS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXthLmFkZEltYWdlT3BzKGF0LFtdLEMpO2lmKHIpe2NvbnN0IGU9e2ZuOmF0LGFyZ3M6W10sb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDthLmFkZERlcGVuZGVuY3kodSk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKHUsUSk7RT1be2RhdGE6dSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodCxpbnRlcnBvbGF0ZTpRLmludGVycG9sYXRlLGNvdW50OjF9XTthLmFkZEltYWdlT3BzKF9lLEUsQyk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1vLmhhcygiU01hc2siKXx8by5oYXMoIk1hc2siKTtpZihpJiZjK2w8MjAwJiYhdSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhBdCxbUV0sQyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgZD1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGY9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KWQ9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtkfWA7ZWxzZSBpZihyJiZnKXtmPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihmKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7ZD1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2R9YH19YS5hZGREZXBlbmRlbmN5KGQpO0U9W2QsYyxsXTthLmFkZEltYWdlT3BzKCRlLEUsQyx1KTtpZihmKXtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKGcpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDpkLGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6QyxoYXNNYXNrOnUsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKGQsbnVsbCxmKTtyZXR1cm59aWYoYypsPjI1ZTR8fHUpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbZCwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOmQsZm46JGUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpDLGhhc01hc2s6dSxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoZCxRLGYpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHtkfSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShkLG51bGwsZil9KSk7aWYocil7Y29uc3QgZT17b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1fTtzLnNldChyLGcsZSk7aWYoZyl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGcsZSk7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1LGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxpLGEscixzKXtjb25zdCBuPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGc9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihnKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGcpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtpWzBdPWEvMjU1O2UoaSwwLGksMCk7dFthXT0yNTUqaVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbixvLGksYSxyLnN0YXRlLmNsb25lKCkscyl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGk9W107bGV0IGE9MCxyPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTthKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2kucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbj1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cyhvLDAsbywwKTtuW2VdPTI1NSpvWzBdfDB9aS5wdXNoKG4pO3IrK31yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09cj9udWxsOml9aGFuZGxlVGlsaW5nVHlwZShlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9bmV3IE9wZXJhdG9yTGlzdCxjPURpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbci5nZXQoIlJlc291cmNlcyIpLGldfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06YSx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0Omd9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGk9Zy5nZXRJUigpLGE9Z2V0VGlsaW5nUGF0dGVybklSKGkscix0KTtzLmFkZERlcGVuZGVuY2llcyhnLmRlcGVuZGVuY2llcyk7cy5hZGRPcChlLGEpO3Iub2JqSWQmJm8uc2V0KG51bGwsci5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6aSxkaWN0OnJ9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIiR7ZX0iLmApfX0pKX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxpLGEscixzLG49bnVsbCxvPW51bGwpe2NvbnN0IGc9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsO2xldCBjPWF3YWl0IHRoaXMubG9hZEZvbnQoZyxpLGUsbixvKTtpZihjLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGMubG9hZFR5cGUzRGF0YSh0aGlzLGUscik7YS5hZGREZXBlbmRlbmNpZXMoYy50eXBlM0RlcGVuZGVuY2llcyl9Y2F0Y2goZSl7Yz1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKSxkaWN0OmMuZm9udCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pfXMuZm9udD1jLmZvbnQ7Yy5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGMubG9hZGVkTmFtZX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgaT10LmZvbnQsYT1pLmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZEKXx8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxpLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoaSxhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBhfWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OmEsdGFzazpyLHN0YXRlTWFuYWdlcjpzLGxvY2FsR1N0YXRlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSl7Y29uc3QgZz10Lm9iaklkO2xldCBjPSEwO2NvbnN0IGw9W107bGV0IGg9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IG49dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpsLnB1c2goW2Esbl0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsblswXSxpLHIscy5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO2wucHVzaChbYSxbZSxuWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6bC5wdXNoKFthLG5vcm1hbGl6ZUJsZW5kTW9kZShuKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShuLCJOb25lIikpe2wucHVzaChbYSwhMV0pO2JyZWFrfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjPSExO2g9aC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhuLGUsaSxyLHMsbykpKTtsLnB1c2goW2EsITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihuKTtsLnB1c2goW2EsdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSk7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKX19YXdhaXQgaDtsLmxlbmd0aD4wJiZpLmFkZE9wKFVBLFtsXSk7YyYmbi5zZXQoYSxnLGwpfWxvYWRGb250KGUsdCxpLGE9bnVsbCxyPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWkuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpsfT1nLGg9cyBpbnN0YW5jZW9mIFJlZjtsZXQgQztpZihsJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW2xdKXtjb25zdCB0PWVbbF0uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVtsXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtsXS5hbGlhc1JlZj1zKTtDPWVbbF0uZm9udElEfWVsc2UgQz10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoQz8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHMsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke0N9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtDfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCByPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHI8MHx8ZS5mbkFycmF5W3JdIT09cnQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoeEEsbnVsbCl9bGV0IHI7c3dpdGNoKHQpe2Nhc2UgT0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cj1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBKQTpjYXNlIHZBOnI9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cj1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AocnQsW1t0XSxpLHJdKTthJiZlLmFkZE9wKExBLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtyXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHM9YVsyXTtzd2l0Y2godCl7Y2FzZSBPQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtzWzBdPU1hdGgubWluKHNbMF0saVswXSxlKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSx0KTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSxlKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSx0KTticmVhaztjYXNlIEpBOmNhc2UgdkE6c1swXT1NYXRoLm1pbihzWzBdLGlbMF0pO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdKTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtzLCJQYXR0ZXJuIixyXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3MsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHJdKTtyZXR1cm4gc31oYW5kbGVDb2xvck4oZSx0LGksYSxyLHMsbixvLGcsYyl7Y29uc3QgbD1pLnBvcCgpO2lmKGwgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXIuZ2V0UmF3KGwubmFtZSksQz1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKEMpdHJ5e2NvbnN0IHI9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHM9Z2V0VGlsaW5nUGF0dGVybklSKEMub3BlcmF0b3JMaXN0SVIsQy5kaWN0LHIpO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcj1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxsPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGw9PT15cil7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxRLHIsZSxuLGcpfWlmKGw9PT13cil7Y29uc3QgaT1yLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1sb29rdXBNYXRyaXgoci5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsYSxpXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtsfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7bH1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsaSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoYTwyKSYmciBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChyLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6aS5wdXNoKHIubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7ci5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCByPTE7cjxhO3IrKyl7Y29uc3QgYT1lW3JdLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT1bXTtpLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihzLHQsZSl9ZWxzZSBhIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGk7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2k9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtpPWV9Y29uc3QgYT1pLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOmkub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9aS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9aS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBpIG9mIHQpZS5wdXNoKGkudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6YSxpZHM6ZSxwb2xpY3k6aS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDpzPW51bGx9KXtpfHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBuPXRoaXMsbz10aGlzLnhyZWY7bGV0IGc9ITE7Y29uc3QgYz1uZXcgTG9jYWxJbWFnZUNhY2hlLGw9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGg9bmV3IExvY2FsR1N0YXRlQ2FjaGUsQz1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsUT1uZXcgTWFwLEU9aS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx1PWkuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksZD1uZXcgU3RhdGVNYW5hZ2VyKHIpLGY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG8sZCkscD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1mLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylhLmFkZE9wKExBLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxhLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxyKX1jYXRjaChlKXtyKGUpfX0pLHIpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtwLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgeSx3LGIsRCxTLGs7Zm9yKDshKHk9cC5jaGVjaygpKTspe20uYXJncz1udWxsO2lmKCFmLnJlYWQobSkpYnJlYWs7bGV0IGU9bS5hcmdzLHI9bS5mbjtzd2l0Y2goMHxyKXtjYXNlIEhlOms9ZVswXWluc3RhbmNlb2YgTmFtZTtTPWVbMF0ubmFtZTtpZihrKXtjb25zdCB0PWMuZ2V0QnlOYW1lKFMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBzPUUuZ2V0UmF3KFMpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9Yy5nZXRCeVJlZihzKXx8bi5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2UoKTtyZXR1cm59Y29uc3QgaT1uLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShzLG4ucGFnZUluZGV4KTtpZihpKXthLmFkZERlcGVuZGVuY3koaS5vYmpJZCk7YS5hZGRJbWFnZU9wcyhpLmZuLGkuYXJncyxpLm9wdGlvbmFsQ29udGVudCxpLmhhc01hc2spO2UoKTtyZXR1cm59cz1vLmZldGNoKHMpfWlmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPXMuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpaWYoIkltYWdlIiE9PWcubmFtZSl7aWYoIlBTIiE9PWcubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtnLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOnMsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbihlLHIpO2Vsc2V7ZC5zYXZlKCk7bi5idWlsZEZvcm1YT2JqZWN0KGkscyxudWxsLGEsdCxkLnN0YXRlLmNsb25lKCksbCkudGhlbigoZnVuY3Rpb24oKXtkLnJlc3RvcmUoKTtlKCl9KSxyKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBvZTpjb25zdCBmPWVbMV07bmV4dChuLmhhbmRsZVNldEZvbnQoaSxlLG51bGwsYSx0LGQuc3RhdGUscykudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2EuYWRkT3Aob2UsW2UsZl0pfSkpKTtyZXR1cm47Y2FzZSB0ZTpnPSEwO2JyZWFrO2Nhc2UgaWU6Zz0hMTticmVhaztjYXNlIExlOmNvbnN0IHA9ZVswXS5jYWNoZUtleTtpZihwKXtjb25zdCB0PWMuZ2V0QnlOYW1lKHApO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cCxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkpO3JldHVybjtjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBRZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPVtdLHk9ZC5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9tLnB1c2goLi4ubi5oYW5kbGVUZXh0KHQseSkpOiJudW1iZXIiPT10eXBlb2YgdCYmbS5wdXNoKHQpO2VbMF09bTtyPUJlO2JyZWFrO2Nhc2UgRWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgdWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7YS5hZGRPcChyZSxbZS5zaGlmdCgpXSk7YS5hZGRPcChhZSxbZS5zaGlmdCgpXSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgZ2U6ZC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbWU6e2NvbnN0IHQ9Q29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxvLGwpO2lmKHQpe2Quc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKChmdW5jdGlvbihlKXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sbCk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbigoZnVuY3Rpb24oZSl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBiZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9UmU7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFNlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgRmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIEdlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgTmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpEPWQuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1SZTticmVha31lPVtdO3I9bnQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsRGUsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2Ugd2U6RD1kLnN0YXRlLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVha31lPVtdO3I9c3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsd2UsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgTWU6bGV0IFI7dHJ5e2NvbnN0IHQ9aS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtSPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBOPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlIscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFOKWNvbnRpbnVlO2U9W05dO3I9TWU7YnJlYWs7Y2FzZSBVQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1oLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFVBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIEpBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIEtBOmNhc2UgVEE6Y2FzZSBxQTpjYXNlIE9BOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgSmU6Y2FzZSB2ZTpjYXNlIHFlOmNhc2UgT2U6Y29udGludWU7Y2FzZSBLZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChLZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChicik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpsPW51bGwsbWFya2VkQ29udGVudERhdGE6aD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOkM9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihofHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmx9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgscikpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO0N8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIUN0KXtDdD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7QnQ9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoQ3QsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpCdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGEpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLGEsaSk7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxpLHQpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxyfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxsPU1hdGguc2lnbih1LndpZHRoKTtpZihvPGwqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1sKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWwqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLGwpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBsPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1sK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9bCtrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGwpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChsKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBoPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihsPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpO2w9TWF0aC5hYnMobCk7aC5oZWlnaHQrPWx9ZWxzZXtsKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KGwsMCk7aC53aWR0aCs9bH1sJiYoaC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IEM9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihDKSYmaC5zdHIucHVzaCgiICIpO2guc3RyLnB1c2goQyk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZixOLEc9W107Zm9yKDshKGQ9Ui5jaGVjaygpKTspe0cubGVuZ3RoPTA7dS5hcmdzPUc7aWYoIVMucmVhZCh1KSlicmVhaztjb25zdCBlPWs7az1zLnN0YXRlO2NvbnN0IHI9dS5mbjtHPXUuYXJncztzd2l0Y2goMHxyKXtjYXNlIG9lOmNvbnN0IHI9R1swXS5uYW1lLHU9R1sxXTtpZihrLmZvbnQmJnI9PT1rLmZvbnROYW1lJiZ1PT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9cjtrLmZvbnRTaXplPXU7bmV4dChoYW5kbGVTZXRGb250KHIsbnVsbCkpO3JldHVybjtjYXNlIEllOmsudGV4dFJpc2U9R1swXTticmVhaztjYXNlIHNlOmsudGV4dEhTY2FsZT1HWzBdLzEwMDticmVhaztjYXNlIG5lOmsubGVhZGluZz1HWzBdO2JyZWFrO2Nhc2UgY2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBsZTprLmxlYWRpbmc9LUdbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBDZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBoZTprLnNldFRleHRNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgYWU6ay5jaGFyU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgcmU6ay53b3JkU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgdGU6ay50ZXh0TWF0cml4PWEuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PWEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGQ9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyxTPUdbMF07Zm9yKGxldCBlPTAsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KmR9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOkdbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHVlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9R1swXTtrLmNoYXJTcGFjaW5nPUdbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3c/Pz1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O049R1swXWluc3RhbmNlb2YgTmFtZTtmPUdbMF0ubmFtZTtpZihOJiZiLmdldEJ5TmFtZShmKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGEpe2lmKCFOKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9dy5nZXRSYXcoZik7aWYociBpbnN0YW5jZW9mIFJlZil7aWYoYi5nZXRCeVJlZihyKSl7ZSgpO3JldHVybn1pZihwLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLHAucGFnZUluZGV4KSl7ZSgpO3JldHVybn1yPW0uZmV0Y2gocil9aWYoIShyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IEU9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoRSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PUUubmFtZSl7Yi5zZXQoZixyLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgdT1zLnN0YXRlLmNsb25lKCksZD1uZXcgU3RhdGVNYW5hZ2VyKHUpLHk9bG9va3VwTWF0cml4KHIuZGljdC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7eSYmZC50cmFuc2Zvcm0oeSk7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgRD17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7by5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBvLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gby5yZWFkeX19O3AuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpyLHRhc2s6dCxyZXNvdXJjZXM6ci5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGksc3RhdGVNYW5hZ2VyOmQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOkQsc2VlblN0eWxlczpnLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjpDLGtlZXBXaGl0ZVNwYWNlOlF9KS50aGVuKChmdW5jdGlvbigpe0QuZW5xdWV1ZUludm9rZWR8fGIuc2V0KGYsci5kaWN0Lm9iaklkLCEwKTtlKCl9KSxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgVUE6Tj1HWzBdaW5zdGFuY2VvZiBOYW1lO2Y9R1swXS5uYW1lO2lmKE4mJkQuZ2V0QnlOYW1lKGYpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIU4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1hLmdldChmKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9ci5nZXQoIkZvbnQiKTtpZihzKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9bnVsbDtrLmZvbnRTaXplPXNbMV07aGFuZGxlU2V0Rm9udChudWxsLHNbMF0pLnRoZW4oZSx0KX1lbHNle0Quc2V0KGYsci5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBZZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztFLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOkdbMF1pbnN0YW5jZW9mIE5hbWU/R1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEtlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7R1sxXWluc3RhbmNlb2YgRGljdCYmKGU9R1sxXS5nZXQoIk1DSUQiKSk7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtwLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzpHWzBdaW5zdGFuY2VvZiBOYW1lP0dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBUZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtFLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBMQTohZXx8ZS5mb250PT09ay5mb250JiZlLmZvbnRTaXplPT09ay5mb250U2l6ZSYmZS5mb250TmFtZT09PWsuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoRS5pdGVtcy5sZW5ndGg+PW8uZGVzaXJlZFNpemUpe2Q9ITA7YnJlYWt9fWlmKGQpbmV4dChicik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBpPXRoaXMueHJlZjtsZXQgYTtjb25zdCByPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGk9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTtpIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmkuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgcz1bXTtsZXQgbixvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe249ZS5nZXQoIkVuY29kaW5nIik7aWYobiBpbnN0YW5jZW9mIERpY3Qpe289bi5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYobi5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9bi5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtzW3QrK109ZS5uYW1lfX19fWVsc2UgaWYobiBpbnN0YW5jZW9mIE5hbWUpbz1uLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGc9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxjPVBpKClbdC5uYW1lXTtvJiZnJiZjJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJkhpKSxpPSEhKHQuZmxhZ3MmSmkpO249Qmk7IlRydWVUeXBlIiE9PXQudHlwZXx8aXx8KG49UWkpO2lmKGV8fGMpe249Q2k7ZyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/bj1FaTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/bj11aTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYobj1RaSkpfXQuZGVmYXVsdEVuY29kaW5nPW59dC5kaWZmZXJlbmNlcz1zO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxzLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHI7Y29uc3QgbD1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWw7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxsKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgaT1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscj1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBuPURpKCk7Zm9yKGNvbnN0IHMgaW4gYSl7bGV0IG89YVtzXTtpZigiIj09PW8pY29udGludWU7bGV0IGc9bltvXTtpZih2b2lkIDAhPT1nKXtpW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk7Y29udGludWV9bGV0IGM9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgaT1vLnN1YnN0cmluZygxKTtpZih0KXtjPXBhcnNlSW50KGksMTYpO2JyZWFrfWM9K2k7aWYoTnVtYmVyLmlzTmFOKGMpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGksMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmc9Z2V0VW5pY29kZUZvckdseXBoKG8sbik7LTEhPT1nJiYoYz1nKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjppW3NdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihjPjAmJmM8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoYykpe2lmKHImJmM9PT0rcyl7Y29uc3QgZT1nZXRFbmNvZGluZyhyKTtpZihlJiYobz1lW3NdKSl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10pO2NvbnRpbnVlfX1pW3NdPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpfX1yZXR1cm4gaX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzppfT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke2l9LVVDUzJgKSxyPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxzPVtdLG49W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBpPXIubG9va3VwKHQpO2lmKGkpe24ubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9MiluLnB1c2goKGkuY2hhckNvZGVBdChlKTw8OCkraS5jaGFyQ29kZUF0KGUrMSkpO3NbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5uKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAocyl9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmkpKXthLnB1c2goaSk7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmcikrNjU1MzYpfWlbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthKytdPDw4fGVbYV0scz1hPj4xOygwIT09cnx8dC5oYXMocykpJiYoaVtzXT1yKX1yZXR1cm4gaX1leHRyYWN0V2lkdGhzKGUsdCxpKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj1bXSxzPTA7Y29uc3Qgbj1bXTtsZXQgbztpZihpLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtzPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihyW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCBzPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygcyljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylyW2VdPXN9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpzLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHI9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpYnJlYWs7e2NvbnN0IHM9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXI7ZSsrKW5bZV09c319fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihyW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtzPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9TWk6aS5mbGFncyY9fk1pO2kuZGVmYXVsdFdpZHRoPXM7aS53aWR0aHM9cjtpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIE9pKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCByPUtpKClbZV18fGU7Y29uc3Qgcz1WaSgpO3IgaW4gc3x8KHI9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXNbcl07aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoaVt0XT1lW3JbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnIsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnMsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTphLHR5cGU6cyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBsPSJUeXBlMyI9PT1zO2lmKCFlKXtpZighbCl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHIpP3hpOjApfChhLm1vbm9zcGFjZT9NaTowKXwoUGkoKVtyXT9IaTpKaSksaD17dHlwZTpzLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6bH0sQz10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxzKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKEFycmF5LmlzQXJyYXkoQykpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBDKXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaElmUmVmKGkpOyJudW1iZXIiPT10eXBlb2YgYSYmKGVbdF09YSk7dCsrfXUud2lkdGhzPWV9ZWxzZSB1LndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGEud2lkdGhzLHUpO3JldHVybiBuZXcgRm9udChlLEUsdSl9e2NvbnN0IGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJGb250QkJveCIpLFswLDAsMCwwXSk7KGU9bmV3IERpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLE5hbWUuZ2V0KHMpKTtlLnNldCgiRm9udEJCb3giLGkpfX1sZXQgaD1lLmdldCgiRm9udE5hbWUiKSxDPXQuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9TmFtZS5nZXQoaCkpOyJzdHJpbmciPT10eXBlb2YgQyYmKEM9TmFtZS5nZXQoQykpO2NvbnN0IFE9aD8ubmFtZSxFPUM/Lm5hbWU7aWYoIWwmJlEhPT1FKXtpbmZvKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtRfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke0V9Ii5gKTtRJiZFJiYoRS5zdGFydHNXaXRoKFEpfHwhaXNLbm93bkZvbnROYW1lKFEpJiZpc0tub3duRm9udE5hbWUoRSkpJiYoaD1udWxsKX1ofHw9QztpZighKGggaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IHUsZCxmLHAsbTt0cnl7dT1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKTtpZih1KXtpZighKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIHNob3VsZCBiZSBhIHN0cmVhbSIpO2lmKHUuaXNFbXB0eSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIGlzIGVtcHR5Iil9fWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3U9bnVsbH1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7aT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7YT0hMH19ZWxzZSBpZighbCl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksciksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgTT1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKE0pfHwoTT0wKTtsZXQgVT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFUmJihVPTApO2NvbnN0IHg9e3R5cGU6cyxuYW1lOmgubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsY29tcG9zaXRlOmEsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczpNLGl0YWxpY0FuZ2xlOlUsaXNUeXBlM0ZvbnQ6bCxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKGEpe2NvbnN0IGU9aS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJih4LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7eC5jTWFwPXQ7eC52ZXJ0aWNhbD14LmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LHgpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fG1yO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxsPU9iamVjdC5jcmVhdGUobnVsbCksaD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLEM9aFsyXS1oWzBdLFE9aFszXS1oWzFdLEU9TWF0aC5oeXBvdChDLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1mZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO2xbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtsW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWw7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgZmU6YnJlYWs7Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIE5lOmNhc2UgR2U6Y2FzZSBNZTpjYXNlIEdBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBVQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9cjt0aGlzLnRleHRNYXRyaXg9YS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9YS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWI7dGhpcy5fZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbH1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6UkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6TkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOk1BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpVQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDp4QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpMQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6dkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6S0EsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6cUEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOk9BLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOmVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDp0ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6aWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpyZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6c2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6Z2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpjZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6bGUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOmhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOkNlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpCZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpFZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpkZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6eWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp3ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmJlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6RGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOlNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDprZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6UmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6R2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOk1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6eGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOkxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpIZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOnZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpLZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpxZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1KQSYmczw9JEE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09RXQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgeEE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgSEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG9lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgeEE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBMQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBoZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBvZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGJlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIEJlOmNhc2UgUWU6Y2FzZSBFZTpjYXNlIHVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxsPWctcjt0JTE4MCE9MCYmKFtjLGxdPVtsLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLGwrbippLWhdLGJib3g6WzAsMCxjLGxdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGwsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBsPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtsPU1hdGgubWF4KGwsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWwqPWEvMWUzO2NvbnN0W2gsQyxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1DO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7bD51JiYoZj11L2wpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWl9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsaT1uZXcgUmVmU2V0O2kucHV0KHRoaXMucm9vdCk7Y29uc3QgYT1bdGhpcy5yb290XTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCByPXQuZmV0Y2hJZlJlZihhLnNoaWZ0KCkpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe2NvbnN0IGU9ci5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihpLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1c2godCk7aS5wdXQodCl9Y29udGludWV9Y29uc3Qgcz1yLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krPTIpZS5zZXQodC5mZXRjaElmUmVmKHNbaV0pLHQuZmV0Y2hJZlJlZihzW2krMV0pKX1yZXR1cm4gZX1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgaT10LmZldGNoSWZSZWYodGhpcy5yb290KSxhPTA7Zm9yKDtpLmhhcygiS2lkcyIpOyl7aWYoKythPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2xldCBzPTAsbj1yLmxlbmd0aC0xO2Zvcig7czw9bjspe2NvbnN0IGE9cytuPj4xLG89dC5mZXRjaElmUmVmKHJbYV0pLGc9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGdbMF0pKW49YS0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihnWzFdKSkpe2k9bzticmVha31zPWErMX19aWYocz5uKXJldHVybiBudWxsfWNvbnN0IHI9aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7bGV0IGk9MCxhPXIubGVuZ3RoLTI7Zm9yKDtpPD1hOyl7Y29uc3Qgcz1pK2E+PjEsbj1zKygxJnMpLG89dC5mZXRjaElmUmVmKHJbbl0pO2lmKGU8bylhPW4tMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gcltuKzFdO2k9bisyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7dWE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXt1dD1PYmplY3QuY3JlYXRlKG51bGwpO2R0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnQ9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7TmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNVPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1U9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1UpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IERyPTAsRnI9LTIsU3I9LTMsa3I9LTQsUnI9LTUsTnI9LTYsR3I9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR3IpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKFNyKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFJyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEZyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKE5yKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKGtyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihrcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoTnIpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihHcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1Ecjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09RHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jb25zdCBNcj0xLFVyPTIseHI9MyxMcj00LEhyPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I3goZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jeChlLHQsTHIpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsaV1vZiBlKWkgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KHQsaS5uYW1lKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHI9ITA7Zm9yKGNvbnN0W2Usc11vZiBpKXtjb25zdHtyZWY6aX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoaSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cj0hMDticmVha31mb3IoY29uc3QgZSBvZiBzKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztyPSExfX1pZihyKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmkscGRmTWFuYWdlcjphLGNoYW5nZXM6cn0pe2NvbnN0IHM9YS5jYXRhbG9nLmNsb25lRGljdCgpLG49bmV3IFJlZlNldENhY2hlO24ucHV0KGkscyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgZz1uZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGM9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtnLnNldCgiUGFyZW50VHJlZSIsYyk7Y29uc3QgbD1bXTtnLnNldCgiSyIsbCk7bi5wdXQobyxnKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9W107aC5zZXQoIk51bXMiLEMpO2NvbnN0IFE9YXdhaXQgdGhpcy4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpsLG51bXM6Qyx4cmVmOnQscGRmTWFuYWdlcjphLGNoYW5nZXM6cixjYWNoZTpufSk7Zy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixRKTtuLnB1dChjLGgpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKXIucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCBzPXIuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocykpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocix0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qscl1vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI0goe2VsZW1lbnRzOnIseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixyPXRoaXMuZGljdC5jbG9uZSgpLHM9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocyxyKTtsZXQgbyxnPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksbD1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe2w9YztjPWEuZmV0Y2gobCl9Yz1jLnNsaWNlKCk7bHx8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cyxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmksY2FjaGU6bn0pO2lmKC0xIT09aCl7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtsJiZuLnB1dChsLGMpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKWkucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LHN0cnVjdFRyZWVSb290Omksa2lkczphLG51bXM6cix4cmVmOnMscGRmTWFuYWdlcjpuLGNoYW5nZXM6byxjYWNoZTpnfSl7Y29uc3QgYz1OYW1lLmdldCgiT0JKUiIpO2xldCBsLGg9LTE7Zm9yKGNvbnN0W0MsUV1vZiBlKXtjb25zdCBlPWF3YWl0IG4uZ2V0UGFnZShDKSx7cmVmOkV9PWUsdT1FIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpuLHJlZjpkLHBhcmVudFRyZWVJZDpmLHN0cnVjdFRyZWVQYXJlbnQ6cH1vZiBRKXtpZighbj8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6UX09bjtpZihpJiZOdW1iZXIuaXNJbnRlZ2VyKFEpJiZRPj0wKXtsZXQgdD0obHx8PW5ldyBNYXApLmdldChDKTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShpLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKEUpO2wuc2V0KEMsdCl9Y29uc3QgYT10Py5nZXQoUSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI0ooZSxuKTtvLnB1dChhLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGYpO2NvbnN0IG09cy5nZXROZXdUZW1wb3JhcnlSZWYoKSx5PW5ldyBEaWN0KHMpO1N0cnVjdFRyZWVSb290LiNKKHksbik7YXdhaXQgdGhpcy4jdih7c3RydWN0VHJlZVBhcmVudDpwLHRhZ0RpY3Q6eSxuZXdUYWdSZWY6bSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczphLHhyZWY6cyxjYWNoZTpnfSk7Y29uc3Qgdz1uZXcgRGljdChzKTt5LnNldCgiSyIsdyk7dy5zZXQoIlR5cGUiLGMpO3UmJncuc2V0KCJQZyIsRSk7dy5zZXQoIk9iaiIsZCk7Zy5wdXQobSx5KTtyLnB1c2goZixtKX19cmV0dXJuIGgrMX1zdGF0aWMjSihlLHt0eXBlOnQsdGl0bGU6aSxsYW5nOmEsYWx0OnIsZXhwYW5kZWQ6cyxhY3R1YWxUZXh0Om59KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2kmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKTthJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7ciYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7cyYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocykpO24mJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG4pKX1zdGF0aWMjSCh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6aSxudW1iZXJUcmVlOmF9KXtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBpPXIuZ2V0KGUpO2lmKCFpKXtpPVtdO3Iuc2V0KGUsaSl9aS5wdXNoKHQpfWNvbnN0IHM9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlyZXR1cm47Y29uc3Qgbj1hLmdldChzKSx1cGRhdGVFbGVtZW50PShlLGksYSk9Pntjb25zdCBzPXIuZ2V0KGUpO2lmKHMpe2NvbnN0IGU9aS5nZXRSYXcoIlAiKSxyPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOmEsZGljdDppfTtmb3IoY29uc3QgdCBvZiBzKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBuKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGk9dC5mZXRjaChlKSxhPWkuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSl1cGRhdGVFbGVtZW50KGEsaSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByIG9mIGEpe3I9dC5mZXRjaElmUmVmKHIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixpLGUpKWJyZWFrO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoci5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3QgYT1yLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJnVwZGF0ZUVsZW1lbnQoYSxpLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3Yoe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOmksc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cix4cmVmOnMsY2FjaGU6bn0pe2xldCBvLGc9bnVsbDtpZihlKXsoe3JlZjpnfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgYz1zLmZldGNoSWZSZWYobyk7aWYoIWMpe3IucHVzaChpKTtyZXR1cm59bGV0IGw9bi5nZXQobyk7aWYoIWwpe2w9Yy5jbG9uZSgpO24ucHV0KG8sbCl9Y29uc3QgaD1sLmdldFJhdygiSyIpO2xldCBDPWggaW5zdGFuY2VvZiBSZWY/bi5nZXQoaCk6bnVsbDtpZighQyl7Qz1zLmZldGNoSWZSZWYoaCk7Qz1BcnJheS5pc0FycmF5KEMpP0Muc2xpY2UoKTpbaF07Y29uc3QgZT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2wuc2V0KCJLIixlKTtuLnB1dChlLEMpfWNvbnN0IFE9Qy5pbmRleE9mKGcpO0Muc3BsaWNlKFE+PTA/USsxOkMubGVuZ3RoLDAsaSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDppfT10aGlzLnRyZWU7cmV0dXJuIGkucm9sZU1hcC5oYXModCk/aS5yb2xlTWFwLmdldCh0KTp0fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMucGFyc2VLaWQoZSx0KTtpJiZ0aGlzLmtpZHMucHVzaChpKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGkpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpNcixtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgaT1udWxsO3QgaW5zdGFuY2VvZiBSZWY/aT10aGlzLmRpY3QueHJlZi5mZXRjaCh0KTp0IGluc3RhbmNlb2YgRGljdCYmKGk9dCk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9aS5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlVyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDppLmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6eHIscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpIcixkaWN0Oml9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6aT1udWxsLHBhZ2VPYmpJZDphPW51bGwscmVmT2JqSWQ6cj1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWk7dGhpcy5wYWdlT2JqSWQ9YTt0aGlzLnJlZk9iaklkPXI7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfWNvbGxlY3RPYmplY3RzKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2Zvcihjb25zdFtlXW9mIGkpe2NvbnN0IHQ9ci5nZXRSYXcoZSk7dCBpbnN0YW5jZW9mIFJlZiYmYS5zZXQoZSx0KX1yZXR1cm4gYX1wYXJzZShlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwLHM9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoaSkpe2NvbnN0IGU9cy5nZXQoaSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSx0XW9mIGEpe2NvbnN0IGk9cy5nZXQoZSk7aWYoaSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoSWZSZWYoaSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT14ciYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7Y29uc3Qgcj1lLmdldCgiUCIpO2lmKCFyfHxpc05hbWUoci5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxhKXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9Y29uc3Qgcz10aGlzLmFkZE5vZGUocix0LGkrMSk7aWYoIXMpcmV0dXJuIGE7bGV0IG49ITE7Zm9yKGNvbnN0IHQgb2Ygcy5raWRzKWlmKHQudHlwZT09PUhyJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9YTtuPSEwfW58fHQuZGVsZXRlKGUpO3JldHVybiBhfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGk9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighaSlyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgRGljdCl7aWYoaS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKXtjb25zdCBzPWlbcl07aWYocz8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDthPSEwfX1yZXR1cm4gYX1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7bGV0IHI9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiByJiYocj1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgciYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHIpKTtjb25zdCBzPWUuZGljdC5nZXQoIkEiKTtpZihzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKWEuYmJveD1lO2Vsc2V7Y29uc3QgZT1zLmdldCgiV2lkdGgiKSx0PXMuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihhLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgbj1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09SHI/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLGkrMSk6dC50eXBlPT09TXJ8fHQudHlwZT09PVVyP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT14cj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PUxyJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIGlzVmFsaWRFeHBsaWNpdERlc3QoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbdCxpLC4uLmFdPWU7aWYoISh0IGluc3RhbmNlb2YgUmVmfHxOdW1iZXIuaXNJbnRlZ2VyKHQpKSlyZXR1cm4hMTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4hMTtjb25zdCByPWEubGVuZ3RoO2xldCBzPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZihyPDJ8fHI+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PXI7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKHI+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1yKXJldHVybiExO3M9ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBhKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxzJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gaXNWYWxpZEV4cGxpY2l0RGVzdChlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0KTtpZihpc1ZhbGlkRXhwbGljaXREZXN0KHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlRGljdENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWNsb25lRGljdCgpe3JldHVybiB0aGlzLl9jYXREaWN0LmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKG10LnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGk9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpLmRpY3QgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZGljdC5nZXQoIlR5cGUiKSxhPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZihpc05hbWUoZSwiTWV0YWRhdGEiKSYmaXNOYW1lKGEsIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhpLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IGE9ZS5nZXQoaSk7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbaV09YSl9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkU3RydWN0VHJlZVJvb3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgU3RydWN0VHJlZVJvb3QodCxlKTtpLmluaXQoKTtyZXR1cm4gaX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGk9W3tvYmo6ZSxwYXJlbnQ6dH1dLGE9bmV3IFJlZlNldDthLnB1dChlKTtjb25zdCByPXRoaXMueHJlZixzPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCB0PWkuc2hpZnQoKSxuPXIuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PW4pY29udGludWU7bi5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBnPW4uZ2V0KCJUaXRsZSIpLGM9bi5nZXQoIkYiKXx8MCxsPW4uZ2V0QXJyYXkoIkMiKSxoPW4uZ2V0KCJDb3VudCIpO2xldCBDPXM7IWlzTnVtYmVyQXJyYXkobCwzKXx8MD09PWxbMF0mJjA9PT1sWzFdJiYwPT09bFsyXXx8KEM9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IobCwwKSk7Y29uc3QgUT17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBnP3N0cmluZ1RvUERGU3RyaW5nKGcpOiIiLGNvbG9yOkMsY291bnQ6TnVtYmVyLmlzSW50ZWdlcihoKT9oOnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goUSk7ZT1uLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OlF9KTthLnB1dChlKX1lPW4uZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO2EucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBpPVtdO2Zvcihjb25zdCBlIGluIHcpe2NvbnN0IGE9d1tlXTt0JmEmJmkucHVzaChhKX1yZXR1cm4gaX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9dC5nZXQoIkQiKTtpZighaSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSYmci5wdXQoZSx0aGlzLiNZKGUpKTtlPXRoaXMuI0soaSxyKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jWShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxpPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihpLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCByPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7ci5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGkuaW50ZW50PXIubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgcz10LmdldCgiVXNhZ2UiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gaTtjb25zdCBuPWkudXNhZ2Usbz1zLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGc9cy5nZXQoIlZpZXciKTtpZihnIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1nLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4udmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBpfSNLKGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmaS5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGk9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhzKSl7YS5wdXQocyk7ci5wdXNoKHMudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHMsaSk7ZSYmci5wdXNoKGUpfWlmKGk+MClyZXR1cm4gcjtjb25zdCBzPVtdO2Zvcihjb25zdFtlXW9mIHQuaXRlbXMoKSlhLmhhcyhlKXx8cy5wdXNoKGUudG9TdHJpbmcoKSk7cy5sZW5ndGgmJnIucHVzaCh7bmFtZTpudWxsLG9yZGVyOnN9KTtyZXR1cm4gcn1mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnIpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbj8ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHMpLG9yZGVyOm59Om51bGx9Y29uc3QgaT10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHI9MTA7IWZ1bmN0aW9uIHBhcnNlUkJHcm91cHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHI9bmV3IFNldDtmb3IoY29uc3QgaSBvZiBlKWlmKGkgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGkpJiYhci5oYXMoaS50b1N0cmluZygpKSl7ci5hZGQoaS50b1N0cmluZygpKTt0LmdldChpKS5yYkdyb3Vwcy5wdXNoKHIpfX19KGUuZ2V0KCJSQkdyb3VwcyIpKTtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpbLi4udF19fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy5fYWN0dWFsTnVtUGFnZXM9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FjdHVhbE51bVBhZ2VzfWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbaSxhXW9mIGUuZ2V0QWxsKCkpe2NvbnN0IGU9ZmV0Y2hEZXN0KGEpO2UmJih0W3N0cmluZ1RvUERGU3RyaW5nKGkpXT1lKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgZSl7Y29uc3QgZT1mZXRjaERlc3QoYSk7ZSYmKHRbaV09ZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLHQpfWdldERlc3RpbmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKGEpe3dhcm4oYEZvdW5kICIke2V9IiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLmApO3JldHVybiBhfX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fcmVhZERlc3RzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtyZXR1cm4gZT8uaGFzKCJEZXN0cyIpP25ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgaT1udWxsLGE9IiI7Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IHM9IiIsbj0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2k9ZS5uYW1lfWVsc2UgaT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGkpe2Nhc2UiRCI6cz1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpzPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWkpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09aT85Nzo2NSxhPW4tMTtzPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtpfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2VdPWErcztuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLmdldEtleXMoKSl7Y29uc3QgYT1lLmdldChpKTtsZXQgcjtzd2l0Y2goaSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihyPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wKXthLmV2ZXJ5KCgoZSx0LGkpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49aVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocj1hKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYocj1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7aX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cil7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtpXT1yfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPW5ldyBEaWN0KHRoaXMueHJlZik7aS5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDppLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3QuZGVzdD1hLmRlc3Q6YS5hY3Rpb24mJih0LmFjdGlvbj1hLmFjdGlvbil9ZWxzZSBBcnJheS5pc0FycmF5KGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXtjb25zdCBpPW5ldyBGaWxlU3BlYyhhLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtzdHJpbmdUb1BERlN0cmluZyhlKV09aS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXt0fHwodD1uZXcgRGljdCh0aGlzLnhyZWYpKTt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlKSxhKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfV9jb2xsZWN0SmF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsaSl7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoaS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgYT1pLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodHx8PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsaV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSksaSl9Y29uc3QgaT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2kmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGkpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuX2NvbGxlY3RKYXZhU2NyaXB0KCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuX2NhdERpY3QsbUEpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgZSlpIGluIHQ/dFtpXS5wdXNoKGEpOnRbaV09W2FdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBpPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEubG9hZGVkTmFtZT09PWUpe2EuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMucGFnZURpY3RDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxpPW5ldyBSZWZTZXQsYT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTthIGluc3RhbmNlb2YgUmVmJiZpLnB1dChhKTtjb25zdCByPXRoaXMueHJlZixzPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLG49dGhpcy5wYWdlSW5kZXhDYWNoZSxvPXRoaXMucGFnZURpY3RDYWNoZTtsZXQgZz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCBhPXQucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYz1zLmdldChhKTtpZihjPj0wJiZnK2M8PWUpe2crPWM7Y29udGludWV9aWYoaS5oYXMoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtpLnB1dChhKTtjb25zdCBsPWF3YWl0KG8uZ2V0KGEpfHxyLmZldGNoQXN5bmMoYSkpO2lmKGwgaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1sLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIikpe3MuaGFzKGEpfHxzLnB1dChhLDEpO24uaGFzKGEpfHxuLnB1dChhLGcpO2lmKGc9PT1lKXJldHVybltsLGFdO2crKztjb250aW51ZX19dC5wdXNoKGwpO2NvbnRpbnVlfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmN9PWE7bGV0IGw9YS5nZXRSYXcoIkNvdW50Iik7bCBpbnN0YW5jZW9mIFJlZiYmKGw9YXdhaXQgci5mZXRjaEFzeW5jKGwpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGwpJiZsPj0wKXtjJiYhcy5oYXMoYykmJnMucHV0KGMsbCk7aWYoZytsPD1lKXtnKz1sO2NvbnRpbnVlfX1sZXQgaD1hLmdldFJhdygiS2lkcyIpO2ggaW5zdGFuY2VvZiBSZWYmJihoPWF3YWl0IHIuZmV0Y2hBc3luYyhoKSk7aWYoIUFycmF5LmlzQXJyYXkoaCkpe2xldCB0PWEuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgci5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYS5oYXMoIktpZHMiKSl7aWYoZz09PWUpcmV0dXJuW2EsbnVsbF07ZysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9aC5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3QgaT1oW2VdO3QucHVzaChpKTthPT09dGhpcy50b3BsZXZlbFBhZ2VzRGljdCYmaSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGkpJiZvLnB1dChpLHIuZmV0Y2hBc3luYyhpKSl9fXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGk9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3Qgcz1uZXcgTWFwLG49dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgZz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGcpO3Muc2V0KGcrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGk7aWYoZSYmdCYmMD09PWcpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7aX0iLmApO2k9RGljdC5lbXB0eX1zLnNldChnKyssW2ksbnVsbF0pfWZvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IHM9dC5nZXRSYXcoIktpZHMiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtzPWF3YWl0IG4uZmV0Y2hBc3luYyhzKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHI+PXMubGVuZ3RoKXtpLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89c1tyXTtsZXQgZztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtnPWF3YWl0IG4uZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgZz1vO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBjPWcuZ2V0UmF3KCJUeXBlIik7aWYoYyBpbnN0YW5jZW9mIFJlZil0cnl7Yz1hd2FpdCBuLmZldGNoQXN5bmMoYyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShjLCJQYWdlIil8fCFnLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGcsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmkucHVzaCh7Y3VycmVudE5vZGU6Zyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHN9Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGk9dGhpcy54cmVmO2xldCBhPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgYSxyPTA7cmV0dXJuIGkuZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihpKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGksIlBhZ2UiKSYmIShpIGluc3RhbmNlb2YgRGljdCYmIWkuaGFzKCJUeXBlIikmJmkuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFpKXJldHVybiBudWxsO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTthPWkuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gaS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2xldCBuPSExO2Zvcihjb25zdCBhIG9mIGUpe2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChhLHQpKXtuPSEwO2JyZWFrfXMucHVzaChpLmZldGNoQXN5bmMoYSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9yKz1lLmdldCgiQ291bnQiKTpyKyt9KSkpfWlmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcixhXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLGEpO3JldHVybiBhfWNvbnN0W2kscl09dDthKz1pO3JldHVybiBuZXh0KHIpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmk9bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHIscyxuPWUuZ2V0KCJBIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSluPWUuZ2V0KCJEZXN0Iik7ZWxzZXtuPWUuZ2V0KCJBQSIpO24gaW5zdGFuY2VvZiBEaWN0JiYobi5oYXMoIkQiKT9uPW4uZ2V0KCJEIik6bi5oYXMoIlUiKSYmKG49bi5nZXQoIlUiKSkpfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW4uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgaT1lLm5hbWU7c3dpdGNoKGkpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPW4uZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpyPW4uZ2V0KCJVUkkiKTtyIGluc3RhbmNlb2YgTmFtZSYmKHI9Ii8iK3IubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpzPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGw9bi5nZXQoIkYiKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMobCxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cj10fWVsc2Uic3RyaW5nIj09dHlwZW9mIGwmJihyPWwpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgciYmKHI9ci5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IEM9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIEMmJih0Lm5ld1dpbmRvdz1DKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3I9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocz1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChyLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1yfWlmKHMpe3MgaW5zdGFuY2VvZiBOYW1lJiYocz1zLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcz90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocyk6aXNWYWxpZEV4cGxpY2l0RGVzdChzKSYmKHQuZGVzdD1zKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IEpyPVN5bWJvbCgpLHZyPVN5bWJvbCgpLFlyPVN5bWJvbCgpLEtyPVN5bWJvbCgpLFRyPVN5bWJvbCgpLHFyPVN5bWJvbCgpLE9yPVN5bWJvbCgpLFByPVN5bWJvbCgpLFdyPVN5bWJvbCgpLGpyPVN5bWJvbCgiY29udGVudCIpLFhyPVN5bWJvbCgiZGF0YSIpLFZyPVN5bWJvbCgpLFpyPVN5bWJvbCgiZXh0cmEiKSxfcj1TeW1ib2woKSx6cj1TeW1ib2woKSwkcj1TeW1ib2woKSxBcz1TeW1ib2woKSxlcz1TeW1ib2woKSx0cz1TeW1ib2woKSxpcz1TeW1ib2woKSxhcz1TeW1ib2woKSxycz1TeW1ib2woKSxzcz1TeW1ib2woKSxucz1TeW1ib2woKSxvcz1TeW1ib2woKSxncz1TeW1ib2woKSxJcz1TeW1ib2woKSxjcz1TeW1ib2woKSxscz1TeW1ib2woKSxocz1TeW1ib2woKSxDcz1TeW1ib2woKSxCcz1TeW1ib2woKSxRcz1TeW1ib2woKSxFcz1TeW1ib2woKSx1cz1TeW1ib2woKSxkcz1TeW1ib2woKSxmcz1TeW1ib2woKSxwcz1TeW1ib2woKSxtcz1TeW1ib2woKSx5cz1TeW1ib2woKSx3cz1TeW1ib2woKSxicz1TeW1ib2woKSxEcz1TeW1ib2woKSxGcz1TeW1ib2woKSxTcz1TeW1ib2woKSxrcz1TeW1ib2woIm5hbWVzcGFjZUlkIiksUnM9U3ltYm9sKCJub2RlTmFtZSIpLE5zPVN5bWJvbCgpLEdzPVN5bWJvbCgpLE1zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLExzPVN5bWJvbCgpLEhzPVN5bWJvbCgpLEpzPVN5bWJvbCgpLHZzPVN5bWJvbCgicm9vdCIpLFlzPVN5bWJvbCgpLEtzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLHFzPVN5bWJvbCgpLE9zPVN5bWJvbCgpLFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLHpzPVN5bWJvbCgidWlkIiksJHM9U3ltYm9sKCksQW49e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sZW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LHRuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2godG4pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxyXT1pLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXMpcmV0dXJuIDA7Y29uc3Qgbj1lbltyXTtyZXR1cm4gbj9uKHMpOnN9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8KHI9InJlZ3VsYXIiKTthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChyKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCByPWEuZmluZChlLnR5cGVmYWNlKTtpZihyKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHIpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCByPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7ci5wZGZGb250fHwoci5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqaSxvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsbD1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8bDt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHI9MCxzPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxsPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPGw7YysrKXtjb25zdFtsLGgsQyxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/QzpoO2lmKEUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocytsPmUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cztzKz1sO3Q9Y31lbHNlIGlmKHMrbD5lKXtyKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cz0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHMpO3M9bH1vPSEwO2c9ITF9ZWxzZXtzKz1sO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHMpO3IrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpyLGlzQnJva2VuOm99fX1jb25zdCBhbj0vXlteLltdKy8scm49L15bXlxdXSsvLHNuPTAsbm49MSxvbj0yLGduPTMsSW49NCxjbj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW29zXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxsbj1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGk9ITApe2xldCBhPWUubWF0Y2goYW4pO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOnNufV07bGV0IG49ci5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChybik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1ubjticmVhaztjYXNlIiMiOm4rKztjPW9uO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWduO2JyZWFrO2Nhc2UiKCI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9SW47YnJlYWs7ZGVmYXVsdDpjPXNufWE9ZS5zbGljZShuKS5tYXRjaChhbik7aWYoIWEpYnJlYWs7W3JdPWE7bis9ci5sZW5ndGg7cy5wdXNoKHtuYW1lOnIsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHN9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHI9ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbj1jbi5nZXQoc1swXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXMubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXNbZ10sbD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxzO2lmKHIpe3M9bG4uZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bG4uc2V0KHQscyl9ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2Ugc246ZT10W2lzXShpLCExKTticmVhaztjYXNlIG5uOmU9dFtpc10oaSwhMCk7YnJlYWs7Y2FzZSBvbjplPXRbdHNdKGkpO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmbC5wdXNoKGUpfWlmKDAhPT1sLmxlbmd0aHx8b3x8MCE9PWcpZT1pc0Zpbml0ZShjKT9sLmZpbHRlcigoZT0+YzxlLmxlbmd0aCkpLm1hcCgoZT0+ZVtjXSkpOmwuZmxhdCgpO2Vsc2V7Y29uc3QgaT10W2xzXSgpO2lmKCEodD1pKSlyZXR1cm4gbnVsbDtnPS0xO2U9W3RdfX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsaSl7Y29uc3QgYT1wYXJzZUV4cHJlc3Npb24oaSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zb21lKChlPT5lLm9wZXJhdG9yPT09bm4pKSlyZXR1cm4gbnVsbDtjb25zdCByPWNuLmdldChhWzBdLm5hbWUpO2xldCBzPTA7aWYocil7ZT1yKGUsdCk7cz0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1hLmxlbmd0aDtzPHQ7cysrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6aSxpbmRleDpyfT1hW3NdO2lmKCFpc0Zpbml0ZShyKSl7YVtzXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfWxldCBuO3N3aXRjaChpKXtjYXNlIHNuOm49ZVtpc10odCwhMSk7YnJlYWs7Y2FzZSBubjpuPWVbaXNdKHQsITApO2JyZWFrO2Nhc2Ugb246bj1lW3RzXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSk7aWYoIShyPG4ubGVuZ3RoKSl7YVtzXS5pbmRleD1yLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfXtjb25zdCB0PW5bcl07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgaG49U3ltYm9sKCksQ249U3ltYm9sKCksQm49U3ltYm9sKCksUW49U3ltYm9sKCJfY2hpbGRyZW4iKSxFbj1TeW1ib2woKSx1bj1TeW1ib2woKSxkbj1TeW1ib2woKSxmbj1TeW1ib2woKSxwbj1TeW1ib2woKSxtbj1TeW1ib2woKSx5bj1TeW1ib2woKSx3bj1TeW1ib2woKSxibj1TeW1ib2woKSxEbj1TeW1ib2woInBhcmVudCIpLEZuPVN5bWJvbCgpLFNuPVN5bWJvbCgpLGtuPVN5bWJvbCgpO2xldCBSbj0wO2NvbnN0IE5uPUFuLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1trc109ZTt0aGlzW1JzXT10O3RoaXNbeW5dPWk7dGhpc1tEbl09bnVsbDt0aGlzW1FuXT1bXTt0aGlzW3pzXT1gJHt0fSR7Um4rK31gO3RoaXNbQ3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnJ9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShyKT9yOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtrc109PT1Obj8tMTp0W2tzXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W1lyXShpKX10PWl9cmV0dXJuIGl9W0dzXShlKXtpZighdGhpc1t5bl18fCF0aGlzW01zXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbUnNdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzW0pzXShpKTt0aGlzW3RdPWU7dGhpc1tZcl0oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW1lyXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1JzXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtNc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtSc10pJiZlW2tzXT09PXRoaXNba3NdfVt5c10oKXtyZXR1cm4hMX1bSnJdKCl7cmV0dXJuITF9W2RzXSgpe3JldHVybiExfVtmc10oKXtyZXR1cm4hMX1bTHNdKCl7dGhpcy5wYXJhJiZ0aGlzW2hzXSgpW1pyXS5wYXJhU3RhY2sucG9wKCl9W0hzXSgpe3RoaXNbaHNdKClbWnJdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W1RzXShlKXt0aGlzLmlkJiZ0aGlzW2tzXT09PUFuLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtoc10oKXtyZXR1cm4gdGhpc1tDc10udGVtcGxhdGV9W3dzXSgpe3JldHVybiExfVtic10oKXtyZXR1cm4hMX1bWXJdKGUpe2VbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChlKTshZVtDc10mJnRoaXNbQ3NdJiYoZVtDc109dGhpc1tDc10pfVtKc10oZSl7Y29uc3QgdD10aGlzW1FuXS5pbmRleE9mKGUpO3RoaXNbUW5dLnNwbGljZSh0LDEpfVtCc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bT3NdKGUpe31bVXNdKGUpe31bX3JdKCl7fVtUcl0oZSl7ZGVsZXRlIHRoaXNbeW5dO2lmKHRoaXNbT3JdKXtlLmNsZWFuKHRoaXNbT3JdKTtkZWxldGUgdGhpc1tPcl19fVtFc10oZSl7cmV0dXJuIHRoaXNbUW5dLmluZGV4T2YoZSl9W3VzXShlLHQpe3RbRG5dPXRoaXM7dGhpc1tRbl0uc3BsaWNlKGUsMCx0KTshdFtDc10mJnRoaXNbQ3NdJiYodFtDc109dGhpc1tDc10pfVtEc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtTc10oKXtyZXR1cm4iIn1banNdKCl7cmV0dXJuIDA9PT10aGlzW1FuXS5sZW5ndGg/dGhpc1tqcl06dGhpc1tRbl0ubWFwKChlPT5lW2pzXSgpKSkuam9pbigiIil9Z2V0W0JuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxCbixlLl9hdHRyaWJ1dGVzKX1bbXNdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W2xzXSgpfXJldHVybiExfVtsc10oKXtyZXR1cm4gdGhpc1tEbl19W2NzXSgpe3JldHVybiB0aGlzW2xzXSgpfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbUW5dfVtWcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tqcl0mJihlLiRjb250ZW50PXRoaXNbanJdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbVnJdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bX3NdKCl7cmV0dXJuIG51bGx9W1ZzXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbZ3NdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tvc10oKSl5aWVsZCBlfSpbZm5dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tnc10oKSlpZighZXx8dD09PWUuaGFzKGlbUnNdKSl7Y29uc3QgZT10aGlzW2VzXSgpLHQ9aVtWc10oZSk7dC5zdWNjZXNzfHwodGhpc1tacl0uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W3pyXSgpe3JldHVybiBudWxsfVt2cl0oZSx0KXt0aGlzW1pyXS5jaGlsZHJlbi5wdXNoKGUpfVtlc10oKXt9W0tyXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW1pyXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tlc10oKSx0PXRoaXNbWnJdLmZhaWxpbmdOb2RlW1ZzXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbWnJdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tacl0uZ2VuZXJhdG9yPXRoaXNbZm5dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbWnJdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCl9dGhpc1tacl0uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W3FzXShlKXt0aGlzW1NuXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bbW5dKGUpe2NvbnN0IHQ9dGhpc1tCbl0saT10aGlzW1NuXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W1lzXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0paVtGbl0oZSx0KX1bRm5dKGUsdCl7Y29uc3QgaT10aGlzW3BuXShlLHQpO2k/dGhpc1tobl0oaSxlLHQpOnRoaXNbWXNdKGUsdCl9W3BuXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cz1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXI9ZS5nZXQobik7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQodnMpLHRoaXMscywhMCwhMSk7ciYmKHI9clswXSl9aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW1JzXSE9PXRoaXNbUnNdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbUnNdfSAhPT0gJHt0aGlzW1JzXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGc9cltwbl0oZSx0KTtnJiZyW2huXShnLGUsdCk7cltZc10oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1baG5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2pyXSYmZVtqcl0mJih0aGlzW2pyXT1lW2pyXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1ttbl0oZVtTbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tTbl0mJnRoaXNbU25dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tCbl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW1FuXSllW0ZuXSh0LGkpO2ZvcihsZXQgYT1yW1FuXS5sZW5ndGgsbj1zW1FuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcz1lW1FuXVthXVtQcl0oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChzKTtzW0ZuXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW1ByXSgpO2VbRG5dPXRoaXM7dGhpc1thXT1lO3RoaXNbUW5dLnB1c2goZSk7ZVtGbl0odCxpKX19ZWxzZXtyW1lzXSh0LGkpO3MmJnJbaG5dKHMsdCxpKX19fXN0YXRpY1tFbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtFbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bUHJdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVt6c109YCR7ZVtSc119JHtSbisrfWA7ZVtRbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbQm5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbRW5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVt3bl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pe2NvbnN0IGk9dFtSc10sYT10W1ByXSgpO2VbUW5dLnB1c2goYSk7YVtEbl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtRbl0ucHVzaChhKX1yZXR1cm4gZX1bb3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tRbl0uZmlsdGVyKCh0PT50W1JzXT09PWUpKTp0aGlzW1FuXX1bdHNdKGUpe3JldHVybiB0aGlzW2VdfVtpc10oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbYXNdKGUsdCxpKSl9Klthc10oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0pe2lbUnNdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtEc10oKSkmJih5aWVsZCppW2FzXShlLHQsITEpKX1pJiZ0aGlzW0JuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW0RuXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbd25dPWU7dGhpc1tRbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbUW5dLmxlbmd0aDw9dGhpc1t3bl0pe3RoaXNbUW5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW1JzXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1t3bl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tRbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbUW5dLmxlbmd0aD90aGlzW1FuXVswXVtWcl0oKTp0aGlzW1FuXS5tYXAoKGU9PmVbVnJdKCkpKX1bUHJdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1t3bl0pO2VbUW5dPXRoaXNbUW5dLm1hcCgoZT0+ZVtQcl0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW1FuXX1jbGVhcigpe3RoaXNbUW5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbRG5dPWU7dGhpc1tSc109dDt0aGlzW2pyXT1pO3RoaXNbV3JdPSExO3RoaXNbenNdPSJhdHRyaWJ1dGUiK1JuKyt9W2xzXSgpe3JldHVybiB0aGlzW0RuXX1bcHNdKCl7cmV0dXJuITB9W3JzXSgpe3JldHVybiB0aGlzW2pyXS50cmltKCl9W09zXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbanJdPWUudG9TdHJpbmcoKX1banNdKCl7cmV0dXJuIHRoaXNbanJdfVttc10oZSl7cmV0dXJuIHRoaXNbRG5dPT09ZXx8dGhpc1tEbl1bbXNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tqcl09IiI7dGhpc1t1bl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbQ25dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1pW05zXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3VuXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3VuXT0hMCkpfX10aGlzW1dyXT0hMX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1tSc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2pyXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNba3NdPT09Tm4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW0NuXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtqcl0pfSJgKX1udWxsIT09dGhpc1t1bl0mJih0aGlzW3VuXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tqcl18fDAhPT10aGlzW1FuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbanJdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbanJdKSk6dGhpc1tqcl1bWnNdKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pdFtac10oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtHc10oZSl7aWYodGhpc1tqcl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTt0aGlzW2pyXT0iIn10aGlzW1lyXShlKTtyZXR1cm4hMH1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXtpZih0aGlzW2pyXSYmdGhpc1tRbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTtkZWxldGUgdGhpc1tqcl19fVtWc10oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tSc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tqcl19KTpIVE1MUmVzdWx0LkVNUFRZfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW1FuXS5maWx0ZXIoKHQ9PnRbUnNdPT09ZSkpOnRoaXNbUW5dfVtBc10oKXtyZXR1cm4gdGhpc1tDbl19W3RzXShlKXtjb25zdCB0PXRoaXNbQ25dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbb3NdKGUpfSpbYXNdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbUW5dKXtpW1JzXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVthc10oZSx0KSl9fSpbJHJdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7IWl8fHQmJmlbV3JdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0peWllbGQqaVskcl0oZSx0KX0qW25zXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tRbl0pe2FbUnNdIT09ZXx8aSYmYVtXcl18fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtuc10oZSx0LGkpKX19W3BzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aHx8dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ6dGhpc1t1bl19W3JzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aD90aGlzW2pyXS50cmltKCk6dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ/dGhpc1tRbl1bMF1banNdKCkudHJpbSgpOm51bGw6dGhpc1tqcl0udHJpbSgpfVtPc10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2pyXT1lLnRvU3RyaW5nKCl9W1ZyXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNba3NdKTt0aGlzW2pyXSYmKHQuJGNvbnRlbnQ9dGhpc1tqcl0pO3QuJG5hbWU9dGhpc1tSc107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW1FuXSl0LmNoaWxkcmVuLnB1c2goaVtWcl0oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1tDbl0pdC5hdHRyaWJ1dGVzW2VdPWlbanJdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2pyXT0iIn1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1tibl09aX1bX3JdKCl7dGhpc1tqcl09Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2pyXSxkZWZhdWx0VmFsdWU6dGhpc1tibl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tibl0uaW5jbHVkZXMoZSl9KX1bVHJdKGUpe3N1cGVyW1RyXShlKTtkZWxldGUgdGhpc1tibl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW2RuXT1pO3RoaXNba25dPWF9W19yXSgpe3RoaXNbanJdPWdldEludGVnZXIoe2RhdGE6dGhpc1tqcl0sZGVmYXVsdFZhbHVlOnRoaXNbZG5dLHZhbGlkYXRlOnRoaXNba25dfSl9W1RyXShlKXtzdXBlcltUcl0oZSk7ZGVsZXRlIHRoaXNbZG5dO2RlbGV0ZSB0aGlzW2tuXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBHbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtjc10oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2xldCBhPWUudztjb25zdCByPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbWnJdLHI9ZS5jb2xTcGFuO2xldCBzO2lmKC0xPT09cil7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihzKXx8KGE9ZS53PXMpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW1JzXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bX3NdKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtjc10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHIscyl7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscik7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbeHNdKG4pO3JldHVybiBuLmNvbXB1dGUocyl9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHI9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG49MDtpZihlLm1hcmdpbil7cz1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW2hzXSgpO2xldCBpPWVbbHNdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW2xzXSgpfX1jb25zdCBsPShlLnd8fHQud2lkdGgpLXMsaD1lW0NzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtqcl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtqcl0sYyxnLG8saCxsKTthPXQud2lkdGg7aT10LmhlaWdodDtyPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbanNdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxsKTthPWUud2lkdGg7aT1lLmhlaWdodDtyPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46cn19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9ZS53O2lmKCIiPT09cil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2NzXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHI9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocil9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2NzXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHM9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhzKX1hPVtlLngsZS55LHIsc119cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbY3NdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W1pyXSxhPWUuY29sU3BhbjtsZXQgcjtyPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHIpfHwoZS53PXIpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoR24uaGFzT3duUHJvcGVydHkoYSkpR25bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtfc10oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6c309ZS5ib3JkZXJbWnJdO2xldCBuLG8sZz1zWzBdLGM9c1szXTtjb25zdCBsPXNbMF0rc1syXSxoPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLWx9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tbH1weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289bD9gY2FsYygxMDAlIC0gJHtsfXB4KWA6IjEwMCUifWNvbnN0IEM9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJkMucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpDLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHIuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtyLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtyLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gcn1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbaHNdKClbWnJdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbX3NdKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcj1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3J9ImA7Y29uc3Qgcz1pLmZpbmQocik7aWYocyl7Y29uc3R7Zm9udEZhbWlseTppfT1zLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXImJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscyk7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW1pyXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtacl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW1pyXS5jaGlsZHJlbn07aWYoZVtacl0uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVtacl0uZmFpbGluZ05vZGVbenJdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW1pyXSxyPWEuYXZhaWxhYmxlU3BhY2UsW3MsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscytvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4oci53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtacl0uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtacl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbWnJdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW1pyXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtacl0uY29sdW1uV2lkdGhzLnNsaWNlKGVbWnJdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbaHNdKClbWnJdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2NzXSgpLGE9aVtacl0/LmF0dGVtcHR8fDAsWyxyLHMsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLG5dPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxuXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxuXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Msbl09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Msbl09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxuXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstcywtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4sc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtzLG5dO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PWlbWnJdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW2JzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW2hzXSgpW1pyXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVt3c10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbYnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3I+ZVtoc10oKVtacl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBNbj1Bbi50ZW1wbGF0ZS5pZCxVbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhuPS9eSChcZCspJC8sTG49bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxIbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3NzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtZcl0odCk7ZS52YWx1ZT10fWUudmFsdWVbT3NdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbb3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtnc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWlmKGVbV3NdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW29zXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWNvbnN0IGk9ZVtoc10oKTtlW1dzXT0rK2lbV3NdO2NvbnN0IGE9aVtLc10odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVtWc10oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaCh4bik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtsc10oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tqcl0/dC5zcGVha1tqcl06dC50b29sVGlwP3QudG9vbFRpcFtqcl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO2lmKG51bGw9PT10W1pyXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtacl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W1pyXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO3RbWnJdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtacl0pcmV0dXJuITE7ZVtacl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW2hzXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFtLc10oZS50YXJnZXQsZVtsc10oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpyfT10W1pyXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbWnJdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW1pyXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHM9aSYmaVtsc10oKTtsZXQgbixvPXM7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YociksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocik7ZWxzZXtpZighaXx8aT09PXIpcmV0dXJuITE7bj1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXM9PT1hP251bGw6c31lW1pyXS50YXJnZXQ9bztlW1pyXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbaHNdKCkscj1hW1pyXS5ub0xheW91dEZhaWx1cmUscz10W2NzXTt0W2NzXT0oKT0+ZTthW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W1ZzXShpKTtlW3ZyXShuLmh0bWwsbi5iYm94KTthW1pyXS5ub0xheW91dEZhaWx1cmU9cjt0W2NzXT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtfc10oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW19zXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcj17eG1sbnM6VW4sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpVbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxzPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6VW4sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7c30gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihyLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnJ9O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3NdfSk7cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltnc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRHNdKCl7cmV0dXJuITB9W2ZzXSgpe3JldHVybiEwfVt2cl0oZSx0KXtjb25zdFtpLGEscixzXT10O3RoaXNbWnJdLndpZHRoPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoLGkrcik7dGhpc1tacl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCxhK3MpO3RoaXNbWnJdLmNoaWxkcmVuLnB1c2goZSl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5hdmFpbGFibGVTcGFjZX1bVnNdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1t6c10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1tacl09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCByPXRoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXIuc3VjY2Vzcyl7aWYoci5pc0JyZWFrKCkpcmV0dXJuIHI7ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tacl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW1pyXS5oZWlnaHQpO2NvbnN0IHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1tacl0ud2lkdGgsdGhpc1tacl0uaGVpZ2h0XTtkZWxldGUgdGhpc1tacl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bVnNdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2pyXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tqcl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc3NdKCl7aWYoIXRoaXNbWnJdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW1pyXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbWnJdfVtfc10oKXtjb25zdHtlZGdlczplfT10aGlzW3NzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbX3NdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltfc10oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW19zXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bVnNdKGUpe3RoaXNbWnJdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tsc10oKVtsc10oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbenNdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2pyXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbenNdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtPc10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NzXShlKXtpZighdGhpc1tacl0pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW1pyXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1tacl19W1ZzXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtWc10oZSkuaHRtbDtpZighdCl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbc3NdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbTHNdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHIscztjb25zdCBuPXRoaXNbbHNdKClbbHNdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVtWc10oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltqc10oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLGw9bltjc10oKSxoPW5benNdO2xldCBDO2lmKGwgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3M9bFt6c107YT0icmFkaW8iO3I9InhmYVJhZGlvIjtDPWxbWHJdPy5benNdfHxsW3pzXX1lbHNle2E9ImNoZWNrYm94IjtyPSJ4ZmFDaGVja2JveCI7Qz1uW1hyXT8uW3pzXXx8blt6c119Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6Qyx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07cyYmKFEuYXR0cmlidXRlcy5uYW1lPXMpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHI9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW1ZzXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3NdW1ZzXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5banNdKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3IucHVzaCh0KX1nfHxyLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBzPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVt6c10sZGF0YUlkOmlbWHJdPy5benNdfHxpW3pzXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtzWyJhcmlhLXJlcXVpcmVkIl09ITA7cy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYocy5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnIsYXR0cmlidXRlczpzfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEscl09dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnJ9O2NvbnN0IHM9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihzLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6cn07W2ksYSxyXT1zO3JldHVybntyOmksZzphLGI6cn19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W0JzXSgpe3JldHVybiExfVtfc10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1ZzXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbenNdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKTt0aGlzW2pyXT1lP25ldyBEYXRlKGUpOm51bGx9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2pyXS50cmltKCkpO3RoaXNbanJdPWlzTmFOKGUpP251bGw6ZX1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpyLGlzQnJva2VuOnN9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYocyYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXImJiIiPT09dGhpcy5oJiYodGhpcy5oPXIpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1t6c10sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgbD1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbVnNdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW19zXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtkc10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W0dzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVba3NdPT09QW4ueGh0bWwuaWQpe3RoaXNbanJdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbanJdPWU7cmV0dXJuITB9cmV0dXJuITF9W1ZzXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbanJdP3RoaXNbanJdW1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2ZzXSgpe3JldHVybiEwfVtCc10oKXtyZXR1cm4hMH1bT3NdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtZcl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbT3NdKGUpfX1bYnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJnRoaXNbWnJdLm51bWJlckluTGluZT4wfHx0aGlzW2xzXSgpW2JzXSgpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtacl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3pyXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W3ZyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtlc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1ZzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1t3c10oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCByPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tjc10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tacl0uY29sdW1uV2lkdGhzPWU7dGhpc1tacl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBzPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cztpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tIc10oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW1pyXS5hdHRlbXB0PGM7dGhpc1tacl0uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1tacl0uYXR0ZW1wdCYmKHRoaXNbWnJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbS3JdKHtmaWx0ZXI6cixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiYwPT09dGhpc1tacl0ubnVtYmVySW5MaW5lJiYhdGhpc1toc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW1pyXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbTHNdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW1pyXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGw9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2w9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBDPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK2wsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxDLFFdOyIiPT09dGhpcy53JiYocy53aWR0aD1tZWFzdXJlVG9TdHJpbmcoQykpOyIiPT09dGhpcy5oJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bZnNdKCl7cmV0dXJuITB9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtDc109dGhpc1tDc107dGhpc1tZcl0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtZcl0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW1pyXTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltWc10oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCByPTAscz0wO2lmKHRoaXMubWFyZ2luKXtyPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3M9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVtDc10uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxyPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHM9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpyKmEsbGluZUdhcDpzKmEsbGluZU5vR2FwOk1hdGgubWF4KDEsci1zKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbc3NdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnIsaDpzLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltzc10oZSk7aWYobiYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cjtpPXM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXI7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1zO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tMc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbenNdLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGw9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46bH07YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBDPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW19zXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW1ZzXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxDKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW1dzXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tXc106RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbV3NdKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLEMpfWVsc2UgT2JqZWN0LmFzc2lnbihvLEMpO2wucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW1ZzXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW2pzXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3NzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW1ZzXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3NzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bc3NdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtcy1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W19zXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PWVbbHNdKClbbHNdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscj1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3I9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cj0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcz10W19zXSh0aGlzLmNvbG9yKTtzJiYoaVtzLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPXMpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3JbX3NdKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tqcl0udHJpbSgpKTt0aGlzW2pyXT1pc05hTihlKT9udWxsOmV9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbanJdP3RoaXNbanJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzW0NzXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bX3NdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbQ3NdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtWc10oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhTG4uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tDc10uaW1hZ2VzJiZ0aGlzW0NzXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW2pyXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbanJdKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGldb2YgSG4paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGkpPT50PT09ZVtpXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWk7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBpO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6aT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmk9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmk9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbbHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6aSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtsc10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bVnNdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbanJdLnRyaW0oKSwxMCk7dGhpc1tqcl09aXNOYU4oZSk/bnVsbDplfVtWc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtWc10oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbb3NdKCkpZS5wdXNoKHRbanNdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtWc10oKXtjb25zdCBlPXRoaXNbbHNdKClbbHNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxpPXRbX3NdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPWkuY29sb3I7bGV0IHMsbixvLGcsYz0iMTAwJSIsbD0iMTAwJSI7aWYoZS53PD1yKXtbcyxuLG8sZ109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLG4sbyxnXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2w9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsbixvLGddPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsbixvLGddPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHgxOnMseTE6bix4MjpvLHkyOmcsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbix3aWR0aDpjLGhlaWdodDpsLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltfc10oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bX3JdKCl7dGhpc1tqcl09Z2V0U3RyaW5nT3B0aW9uKHRoaXNbanJdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoaS5sZW5ndGg8NHx8aVsyXTwwfHxpWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbYSxyLHMsbl09aTtyZXR1cm57eDphLHk6cix3aWR0aDpzLGhlaWdodDpufX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1RyXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NzXSgpe2lmKCF0aGlzW1pyXSl7Y29uc3QgZT10aGlzW2xzXSgpLHQ9dGhpc1toc10oKSxpPXRbS3NdKHRoaXMudGFyZ2V0LGUpLGE9dFtLc10odGhpcy5sZWFkZXIsZSkscj10W0tzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tacl09e3RhcmdldDppPy5bMF18fG51bGwsbGVhZGVyOmE/LlswXXx8bnVsbCx0cmFpbGVyOnI/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbWnJdfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtGc10oKXtpZighdGhpc1tacl0pe3RoaXNbWnJdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tacl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3FyXSgpe2RlbGV0ZSB0aGlzW1pyXX1bSXNdKCl7dGhpc1tacl18fCh0aGlzW1pyXT17bnVtYmVyT2ZVc2U6MH0pO2NvbnN0IGU9dGhpc1tsc10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbSXNdKCl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtWc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW1pyXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tacl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbWnJdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tLcl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t6c10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3FyXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtxcl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtxcl0oKX1bRnNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbWnJdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtJc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9KTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tacl0ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW1pyXS5wYWdlSW5kZXhdW0lzXSgpfWlmKHRoaXNbWnJdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbWnJdLnBhZ2VTZXRJbmRleF1bSXNdKCl9aWYodGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7dGhpc1tacl0ucGFnZUluZGV4PS0xO3RoaXNbWnJdLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbbHNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbSXNdKCk7dGhpc1txcl0oKTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbaHNdKClbWnJdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGk9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pKTtyZXR1cm4gYXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW19zXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiLGk9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2l9KHRvIHRvcCwke2F9KSAke2l9KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pICR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2l9KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7aX0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbX3NdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbX3NdKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6YS5yYWRpdXMscnk6YS5yYWRpdXMsc3R5bGU6aX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbixzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtyZXR1cm4gZT9lW19zXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtjc10oKXtjb25zdCBlPXRoaXNbbHNdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbY3NdKCk6ZX1bZnNdKCl7cmV0dXJuITB9W2JzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiZ0aGlzW1pyXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tsc10oKVtic10oKX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt6cl0oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVt2cl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bZXNdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbWnJdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW1pyXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtWc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtDc109dGhpc1tDc107dGhpc1tZcl0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0NzXT10aGlzW0NzXTt0aGlzW1lyXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbQ3NdPXRoaXNbQ3NdO3RoaXNbWXJdKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW0pzXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW1pyXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1toc10oKSxyPWFbWnJdLm5vTGF5b3V0RmFpbHVyZSxzPXRoaXNbd3NdKCk7c3x8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbj1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2NzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW1pyXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW1pyXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLGM9bGF5b3V0Q2xhc3ModGhpcyk7YyYmZy5wdXNoKGMpO2kuc3R5bGU9bztpLmNsYXNzPWc7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW0hzXSgpO2NvbnN0IGw9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsaD1sPzI6MTtmb3IoO3RoaXNbWnJdLmF0dGVtcHQ8aDt0aGlzW1pyXS5hdHRlbXB0Kyspe2wmJjE9PT10aGlzW1pyXS5hdHRlbXB0JiYodGhpc1tacl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tLcl0oe2ZpbHRlcjpuLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYobCYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJjA9PT10aGlzW1pyXS5udW1iZXJJbkxpbmUmJiFhW1pyXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbWnJdLmF0dGVtcHQ9aDticmVha319dGhpc1tMc10oKTtzfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2FbWnJdLm5vTGF5b3V0RmFpbHVyZT1yO2lmKHRoaXNbWnJdLmF0dGVtcHQ9PT1oKXt0aGlzLm92ZXJmbG93JiYodGhpc1toc10oKVtacl0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO3N8fGRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IEM9MCxRPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7UT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBFPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK0MsdGhpcy53fHwwKSx1PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtRLHRoaXMuaHx8MCksZD1bdGhpcy54LHRoaXMueSxFLHVdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoRSkpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHUpKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7Y29uc3QgcD1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGQpO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW1pyXS5hZnRlckJyZWFrQWZ0ZXI9cDtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gcH19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtjc10oKXtsZXQgZT10aGlzW2xzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtsc10oKTtyZXR1cm4gZX1bZnNdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe3RoaXNbanJdPW5ldyBNYXAodGhpc1tqcl0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bX3JdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1dzXT01ZTN9W3dzXSgpe3JldHVybiEwfVtLc10oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbUXNdLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltYc10oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tacl09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbcXJdKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4saT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IGE9bnVsbCxyPW51bGwscz1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9aWYocil7Y29uc3QgZT10aGlzW0tzXShzLHJbbHNdKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7YT1lO3JbWnJdPXt9fX1hfHwoYT10WzBdKTthW1pyXT17bnVtYmVyT2ZVc2U6MX07Y29uc3Qgbj1hW2xzXSgpO25bWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpuLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSkscGFnZVNldEluZGV4OjB9O2xldCBvLGc9bnVsbCxjPW51bGwsbD0hMCxoPTAsQz0wO2Zvcig7Oyl7aWYobCloPTA7ZWxzZXtpLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBpfX1vPW51bGw7dGhpc1tacl0uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW1ZzXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKHQpO2lmKGcpe3RoaXNbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZ1tWc10oYVtacl0uc3BhY2UpLmh0bWwpO2c9bnVsbH1pZihjKXt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbVnNdKGFbWnJdLnNwYWNlKS5odG1sKTtjPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2w9ITE7dGhpc1tacl0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGk9ZVt6cl0oKTtpZihpKXtsfHw9aS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGkpfX07Zm9yKGxldCB0PUMsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXNbWnJdLmN1cnJlbnRDb250ZW50QXJlYT1yW3RdLG49e3dpZHRoOmEudyxoZWlnaHQ6YS5ofTtDPTA7aWYoZyl7c1t0XS5jaGlsZHJlbi5wdXNoKGdbVnNdKG4pLmh0bWwpO2c9bnVsbH1pZihjKXtzW3RdLmNoaWxkcmVuLnB1c2goY1tWc10obikuaHRtbCk7Yz1udWxsfWNvbnN0IGg9ZVtWc10obik7aWYoaC5zdWNjZXNzKXtpZihoLmh0bWwpe2x8fD1oLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChoLmh0bWwpfWVsc2UhbCYmaS5jaGlsZHJlbi5sZW5ndGg+MSYmaS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gaX1pZihoLmlzQnJlYWsoKSl7Y29uc3QgZT1oLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2c9dGhpc1tLc10oZS5sZWFkZXIsZVtsc10oKSk7Zz1nP2dbMF06bnVsbH1pZihlLnRyYWlsZXIpe2M9dGhpc1tLc10oZS50cmFpbGVyLGVbbHNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW1pyXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW1pyXS50YXJnZXQpe289ZVtacl0udGFyZ2V0O0M9ZVtacl0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtacl0uaW5kZXh9ZWxzZSBpZih0aGlzW1pyXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tacl0ub3ZlcmZsb3dOb2RlO3RoaXNbWnJdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGk9ZVtzc10oKSxhPWkudGFyZ2V0O2kuYWRkTGVhZGVyPW51bGwhPT1pLmxlYWRlcjtpLmFkZFRyYWlsZXI9bnVsbCE9PWkudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoYSBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89YTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1yLmluZGV4T2YoYSk7aWYoLTEhPT1lKWU+cz90PWUtMTpDPWU7ZWxzZXtvPWFbbHNdKCk7Qz1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSl9fX1lbHNlIGZsdXNoKHQpfXRoaXNbWnJdLnBhZ2VOdW1iZXIrPTE7byYmKG9bRnNdKCk/b1tacl0ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTthPW98fGFbSXNdKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bSnJdKCl7cmV0dXJuITB9W0dzXShlKXtpZihlW2tzXT09PUFuLnhodG1sLmlkKXt0aGlzW2pyXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbUnNdfS5gKTtyZXR1cm4hMX1bVXNdKGUpe3RoaXNbanJdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW1VzXShlKX1bX3JdKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXSYmKHRoaXNbanJdPXRoaXNbanJdLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bc3NdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXT90aGlzW2pyXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pnt0JiZlLnB1c2godCk7cmV0dXJuIGV9KSxbXSkuam9pbigiXG4iKTp0aGlzW2pyXVtqc10oKX1bVnNdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tqcl0pLmh0bWw7aWYodGhpc1tqcl0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tqcl0pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW2pyXVtWc10oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgaTtjb25zdCBhPXRoaXNbbHNdKClbbHNdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBEcmF3PzE6MCk7aT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bRHNdKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3NzXSgpe2lmKHZvaWQgMD09PXRoaXNbWnJdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW1pyXT10O3JldHVybiB0fX10aGlzW1pyXT1udWxsfXJldHVybiB0aGlzW1pyXX1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tzc10oKTtyZXR1cm4gdD90W1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVtPc10oZSl7Y29uc3QgdD10aGlzW2xzXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbWXJdKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2VbanJdPWVbanJdO3JldHVybn1jb25zdCBpPWVbUnNdO2lmKG51bGw9PT10aGlzW2ldKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW0pzXSh0KX19dGhpc1tlW1JzXV09ZTt0aGlzW1lyXShlKX1lbHNlIHRoaXNbaV1banJdPWVbanJdfVtqc10oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW2pyXT90aGlzLmV4RGF0YVtqcl0udHJpbSgpOnRoaXMuZXhEYXRhW2pyXVtqc10oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W2pyXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVtWc10oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBpW1ZzXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtEc10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFRlbXBsYXRlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2lbcXNdKHQpO3JldHVybiBpfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IEpuPUFuLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtqcl09ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KEFuLmRhdGFzZXRzLmlkLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbb3NdKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlW1ByXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGkpe2VbWHJdPXQ7aWYoZVtCc10oKSlpZih0W3BzXSgpKXtjb25zdCBpPXRbcnNdKCk7ZVtPc10oY3JlYXRlVGV4dChpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBpPXRbb3NdKCkubWFwKChlPT5lW2pyXS50cmltKCkpKS5qb2luKCJcbiIpO2VbT3NdKGNyZWF0ZVRleHQoaSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W3BzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGksYSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHIscztmb3IobGV0IGE9MDthPDM7YSsrKXtyPWlbbnNdKGUsITEsITApO2Zvcig7Oyl7cz1yLm5leHQoKS52YWx1ZTtpZighcylicmVhaztpZih0PT09c1twc10oKSlyZXR1cm4gc31pZihpW2tzXT09PUFuLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1pW1JzXSlicmVhaztpPWlbbHNdKCl9aWYoIWEpcmV0dXJuIG51bGw7cj10aGlzLmRhdGFbbnNdKGUsITAsITEpO3M9ci5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztyPXRoaXMuZGF0YVskcl0oZSwhMCk7cz1yLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW3BzXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjppLHRhcmdldDphLGNvbm5lY3Rpb246cn1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihyKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IHM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZighcyl7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCk7Y29udGludWV9Y29uc3Rbbl09cztpZighblttc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxhLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbZ109bztpZighZ1ttc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgYz1nW2xzXSgpO2lmKGcgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8YyBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGcgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGMgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGw9bltqc10oKSxoPWdbUnNdO2lmKGcgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2hdPWw7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYykuY29uc3RydWN0b3IsW2VdKTtjW2hdPXRbaF19ZWxzZSBpZihnLmhhc093blByb3BlcnR5KGpyKSl7Z1tYcl09bjtnW2pyXT1sO2dbX3JdKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtKc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGk9bmV3IEl0ZW1zKHt9KSxhPW5ldyBJdGVtcyh7fSk7ZVtZcl0oaSk7ZS5pdGVtcy5wdXNoKGkpO2VbWXJdKGEpO2UuaXRlbXMucHVzaChhKTtmb3IoY29uc3R7cmVmOnIsbGFiZWxSZWY6cyx2YWx1ZVJlZjpuLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighciljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFttc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3J9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGc9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtufS5gKTtjb250aW51ZX1jb25zdFtjXT1nO2lmKCFjW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGw9Y3JlYXRlVGV4dChvW2pzXSgpKSxoPWNyZWF0ZVRleHQoY1tqc10oKSk7aVtZcl0obCk7aS50ZXh0LnB1c2gobCk7YVtZcl0oaCk7YS50ZXh0LnB1c2goaCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtyfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsaSl7bGV0IGE7aWYodC5sZW5ndGg+MSl7YT1lW1ByXSgpO2FbSnNdKGEub2NjdXIpO2Eub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVtsc10oKSxzPWVbUnNdLG49cltFc10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sZz1hW1ByXSgpO3Jbc10ucHVzaChnKTtyW3VzXShuK2UsZyk7dGhpcy5fYmluZFZhbHVlKGcsbyxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGcsbyk7dGhpcy5fYmluZEl0ZW1zKGcsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGk9ZVtsc10oKSxhPWVbUnNdO2lmKCEoaVthXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcjtyPWUubmFtZT9pW2FdLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmlbYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9aVtFc10oZSkrMSxuPXQuaW5pdGlhbC1yO2lmKG4pe2NvbnN0IHQ9ZVtQcl0oKTt0W0pzXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7aVthXS5wdXNoKHQpO2lbdXNdKHMsdCk7Zm9yKGxldCBlPTE7ZTxuO2UrKyl7Y29uc3Qgcj10W1ByXSgpO2lbYV0ucHVzaChyKTtpW3VzXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjppfT1lO2lmKCFpfHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09aS5tYXg/MS8wOmkubWF4O3JldHVybltpLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGk9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtvc10oKSl7aWYoYVtYcl0pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW1JzXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbb3NdKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtrc109PT1Kbj8tMTp0W2tzXSxpPWFbWHJdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtZcl0oaSk7dGhpcy5fYmluZEVsZW1lbnQoYSxpKX1jb250aW51ZX1pZighYVtmc10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLG49bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtSc119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2pyXSl9Y29uc3RbbyxnXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7bj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1uKXtuPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFuKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG5bV3JdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYobj1uLmZpbHRlcigoZT0+IWVbV3JdKSkpO24ubGVuZ3RoPmc/bj1uLnNsaWNlKDAsZyk6MD09PW4ubGVuZ3RoJiYobj1udWxsKTtuJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJm4uZm9yRWFjaCgoZT0+e2VbV3JdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgaT1bXTtmb3IoO2kubGVuZ3RoPGc7KXtjb25zdCByPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW0JzXSgpLHQsZSk7aWYoIXIpYnJlYWs7cltXcl09ITA7aS5wdXNoKHIpfW49aS5sZW5ndGg+MD9pOm51bGx9ZWxzZXtuPXRbbnNdKGEubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighbil7aWYoMD09PW8pe2kucHVzaChhKTtjb250aW51ZX1jb25zdCBlPXRba3NdPT09Sm4/LTE6dFtrc107bj1hW1hyXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihuW1dyXT0hMCk7dFtZcl0obik7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKG5bV3JdPSEwKTtuPVtuXX19bj90aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxuLHIpOm8+MD90aGlzLl9zZXRBbmRCaW5kKGEsdCk6aS5wdXNoKGEpfWkuZm9yRWFjaCgoZT0+ZVtsc10oKVtKc10oZSkpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtvc10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5hdCgtMSksW2Escl09aTtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytpWzBdXSxuPWUuZ2V0KHNbenNdKTtpZihuKXNbT3NdKG4pO2Vsc2V7Y29uc3QgdD1zW0FzXSgpO2Zvcihjb25zdCBpIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoaVt6c10pO2lmKHQpe2lbT3NdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW29zXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IGk9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W29zXSgpKSJkYXRhIiE9PWVbUnNdJiZlW1pzXShpKTt0aGlzLmRhdGFbWnNdKGkpO2kucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGkuam9pbigiIil9fWNvbnN0IHZuPUFuLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYmVoYXZpb3JPdmVycmlkZSIpfVtfcl0oKXt0aGlzW2pyXT1uZXcgTWFwKHRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxpPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IGEgb2YgaS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXthPWEuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT9wYXJzZUludChpWzFdLDE2KTowfSkpOzE9PT1hLmxlbmd0aCYmYS5wdXNoKGFbMF0pO2UucHVzaChhKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJleGNsdWRlIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwYWNrZXRzIil9W19yXSgpeyIqIiE9PXRoaXNbanJdJiYodGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnZVJhbmdlIil9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0yKXQucHVzaChlLnNsaWNlKGksaSsyKSk7dGhpc1tqcl09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJyYW5nZSIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInJlY29yZCIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW2pyXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tqcl09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVsZXZhbnQiKX1bX3JdKCl7dGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuYW1lIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKTsodGhpc1tqcl0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tqcl0pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRhZ2dlZCIpfX1jbGFzcyBjb25maWdfVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ1cmkiKX19Y2xhc3MgY29uZmlnX1ZhbGlkYXRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIndpbmRvdyIpfVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW2pyXT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbanJdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInhkYyIsITApO3RoaXMudXJpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IFluPUFuLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgS249QW4uZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YSIsZSl9W3lzXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtHc10oZSl7Y29uc3QgdD1lW1JzXTsoImRhdGEiPT09dCYmZVtrc109PT1Lbnx8IlNpZ25hdHVyZSI9PT10JiZlW2tzXT09PUFuLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbWXJdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgZGF0YXNldHNfRGF0YShlKX19Y29uc3QgVG49QW4ubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBDdXJyZW5jeVN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm5zIiwhMCk7dGhpcy5kYXRlUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBEYXkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJlcmFOYW1lcyIsITApO3RoaXMuZXJhPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibG9jYWxlU2V0IiwhMCk7dGhpcy5sb2NhbGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW0iKX19Y2xhc3MgTWVyaWRpZW1OYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBNb250aCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IFhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclBhdHRlcm5zIiwhMCk7dGhpcy5udW1iZXJQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJudW1iZXJTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE51bWJlclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIFRpbWVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0eXBlRmFjZXMiLCEwKTt0aGlzLnR5cGVGYWNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3QgcW49QW4uc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBPbj1Bbi5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fWNvbnN0IFBuPUFuLnhkcC5pZDtjbGFzcyB4ZHBfWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGVtcGxhdGU9bnVsbH1bTXNdKGUpe2NvbnN0IHQ9QW5bZVtSc11dO3JldHVybiB0JiZlW2tzXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IFduPUFuLnhodG1sLmlkLGpuPVN5bWJvbCgpLFhuPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksVm49bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLFpuPS9ccysvZyxfbj0vW1xyXG5dKy9nLHpuPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1Wbi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPWk7ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09c31hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnIuZm9udFNpemV8fDB9LHQsdFtDc10uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgJG49bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoV24sdCk7dGhpc1tqbl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtDc10udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIFhuLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bSnJdKCl7cmV0dXJuISRuLmhhcyh0aGlzW1JzXSl9W1VzXShlLHQ9ITEpe2lmKHQpdGhpc1tqbl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChfbiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoWm4sIiAiKSl9ZSYmKHRoaXNbanJdKz1lKX1beHNdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCByPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnI9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscik7aWYodGhpc1tqcl0pZS5hZGRTdHJpbmcodGhpc1tqcl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tvc10oKSkiI3RleHQiIT09dFtSc10/dFt4c10oZSk6ZS5hZGRTdHJpbmcodFtqcl0pO3QmJmUucG9wRm9udCgpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbanJdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1tqbl0/dGhpc1tqcl0/dGhpc1tqcl0ucmVwbGFjZUFsbCh6biwiXG4iKTp2b2lkIDA6dGhpc1tqcl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbUnNdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW2puXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3hzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtWc10oZSl7Y29uc3QgdD1zdXBlcltWc10oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W2pzXSgpe3JldHVybiJcbiJ9W3hzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bVnNdKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2pyXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3hzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1beHNdKGUpe3N1cGVyW3hzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1banNdKCl7cmV0dXJuIHRoaXNbbHNdKClbb3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltqc10oKTpzdXBlcltqc10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBBbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bJHNdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW1FzXT1lfVtHc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W19yXSgpe3N1cGVyW19yXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW1FzXS5zZXQodnMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWXNdKHRoaXNbUXNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbUXNdPXRoaXNbUXNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bR3NdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhBbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSl7Y29uc3Qgcz1udWxsIT09YTtpZihzKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXImJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChyKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1Bby5kYXRhc2V0cyx0PWlbTnNdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/aVtOc109YTpkZWxldGUgaVtOc119Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Llskc10odCxpKXx8bmV3IEVtcHR5O29beXNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW3lzXSgpKSYmKG9bT3JdPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1t5c10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKEFuKSlpZihhKGUpKXt0PUFvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09RHIpe3RoaXMuX2N1cnJlbnRbX3JdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W0pyXSgpP3RoaXMuX2N1cnJlbnRbVXNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtVc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtVc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXMpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109bjtlbHNle2xldCB0PXJbTnNdO3R8fCh0PXJbTnNdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Muc2xpY2UoMCxlKSxzLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxyXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pO2dbQ3NdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tfcl0oKTt0aGlzLl9jdXJyZW50W0dzXShnKSYmZ1tUc10odGhpcy5faWRzKTtnW1RyXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbZHNdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtqcl0pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbanJdKTt0W2pyXT1udWxsO3RbR3NdKGkpfXRbX3JdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W0dzXSh0KSYmdFtUc10odGhpcy5faWRzKTt0W1RyXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1bQ3NdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW1hzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW0NzXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bQ3NdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW0NzXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVtDc10uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW0NzXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbUnNdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW1lyXSh0KTt0PWV9Y29uc3QgaT10W1ZzXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmKHIuY2xhc3M9ci5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3IuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W2pzXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpyLGF0dGFjaG1lbnRzOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHIscyxuKXtjb25zdCBvPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixzLG8sbl0pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsLG89bnVsbCl7Y29uc3QgZz1lLmZldGNoSWZSZWYodCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmMscGRmTWFuYWdlcjpsfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IEM9Zy5nZXQoIlN1YnR5cGUiKTtDPUMgaW5zdGFuY2VvZiBOYW1lP0MubmFtZTpudWxsO2NvbnN0IFE9e3hyZWY6ZSxyZWY6dCxkaWN0Omcsc3VidHlwZTpDLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsb3JwaGFuRmllbGRzOnMsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWMuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6bixldmFsdWF0b3JPcHRpb25zOmwuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChDKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oUSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Omcsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oUSk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oUSl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKFEpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihRKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKFEpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKFEpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKFEpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oUSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihRKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKFEpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKFEpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oUSk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oUSk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oUSk7ZGVmYXVsdDpyfHx3YXJuKEM/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke0N9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihRKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2NvbnN0IHM9ZS54cmVmO2xldCBuO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjppZighbil7Y29uc3QgZT1uZXcgRGljdChzKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO249cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChuLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpufSkpO2JyZWFrO2Nhc2UgcDpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIpKTticmVhaztjYXNlIHk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpO2JyZWFrO2Nhc2UgbTpjb25zdCBpPWc/YXdhaXQoYT8uZ2V0KGMuYml0bWFwSWQpKTpudWxsO2lmKGk/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWk7aWYodCl7Y29uc3QgaT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixpKX1jb25zdCBhPWkuaW1hZ2VSZWY9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChhLHtkYXRhOmV9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pfX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cyx4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHA6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06Y29uc3QgYT1zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkP2F3YWl0KHI/LmdldChnLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLGwsaF09aS5zbGljZShlLGUrOCksQz1NYXRoLm1pbihyLG4sZyxsKSxRPU1hdGgubWF4KHIsbixnLGwpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKEM8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW0MsdSxRLHUsQyxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YSxyZWY6cixvcnBoYW5GaWVsZHM6c309ZSxuPXM/LmdldChyKTtuJiZ0LnNldCgiUGFyZW50IixuKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBnPSEhKHRoaXMuZmxhZ3MmaUEpLGM9ISEodGhpcy5mbGFncyZhQSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZlQSksbm9IVE1MOmcmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWk9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgbD10LmdldCgiSVQiKTtsIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1sLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczppfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2kmfkFBOmkmfiR8QUF9aWYoZSl7aXw9QUE7cmV0dXJuIHQ/aSZ+dEF8JDppJn4kfHRBfWkmPX4oJHx0QSk7cmV0dXJuIHQ/aSZ+QUE6aXxBQX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHopJiYhdGhpcy5faGFzRmxhZyhlLHRBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxBQSkmJiF0aGlzLl9oYXNGbGFnKGUsJCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsJCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCByPWkuZ2V0KGEubmFtZSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGkscil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgZz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShzJiZpJmMpO2lmKGwmJihvWzBdPT09b1syXXx8b1sxXT09PW9bM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFnKXtpZighbClyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtnPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2cuZGljdD1uZXcgRGljdH1jb25zdCBoPWcuZGljdCxDPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0sZyksUT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLEU9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHU9Z2V0VHJhbnNmb3JtTWF0cml4KG8sUSxFKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGY7dGhpcy5vYyYmKGY9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1mJiZkLmFkZE9wKEtlLFsiT0MiLGZdKTtkLmFkZE9wKFZlLFtuLG8sdSxFLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmcsdGFzazp0LHJlc291cmNlczpDLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoWmUsW10pO3ZvaWQgMCE9PWYmJmQuYWRkT3AoVGUsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fWFzeW5jIHNhdmUoZSx0LGksYSl7cmV0dXJuIG51bGx9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxpKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCBhPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSkscj1bXSxzPVtdO2xldCBuPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7bnx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtzLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO3MubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczphLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94Oml9KTt0aGlzLnJlc2V0KCk7cy5sZW5ndGgmJnIucHVzaChzLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYoci5sZW5ndGg+MXx8clswXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdCx0PWxvb2t1cFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpLGk9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQobix0LGkpO3RoaXMuZGF0YS50ZXh0Q29udGVudD1yfX1fdHJhbnNmb3JtUG9pbnQoZSx0LGkpe2NvbnN0e3JlY3Q6YX09dGhpcy5kYXRhO3R8fD1bMCwwLDEsMV07aXx8PVsxLDAsMCwxLDAsMF07Y29uc3Qgcj1nZXRUcmFuc2Zvcm1NYXRyaXgoYSx0LGkpO3JbNF0tPWFbMF07cls1XS09YVsxXTtlPVV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxyKTtyZXR1cm4gVXRpbC5hcHBseVRyYW5zZm9ybShlLGkpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50Iikpe3dhcm4oIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSkpO2xldCBpPWU7Y29uc3QgYT1uZXcgUmVmU2V0O2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2Zvcig7aS5oYXMoIlBhcmVudCIpOyl7aT1pLmdldCgiUGFyZW50Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCl8fGkub2JqSWQmJmEuaGFzKGkub2JqSWQpKWJyZWFrO2kub2JqSWQmJmEucHV0KGkub2JqSWQpO2kuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiVCIpKSl9cmV0dXJuIHQuam9pbigiLiIpfX1jbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTE7dGhpcy5yYXdXaWR0aD0xO3RoaXMuc3R5bGU9UUE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dGhpcy5yYXdXaWR0aD1lO2NvbnN0IGk9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7aWYoaT4wJiZhPjAmJihlPml8fGU+YSkpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1RQTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9RUE7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXVBO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1kQTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ZkF9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBpPSEwLGE9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2k9ITE7YnJlYWt9dD4wJiYoYT0hMSl9aWYoMD09PWUubGVuZ3RofHxpJiYhYSl7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgaT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWkgaW5zdGFuY2VvZiBOYW1lP2kubmFtZTpffWxldCBpPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PVope2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTtpPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWkgaW5zdGFuY2VvZiBSZWY/aS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6aSxmaWxsQ29sb3I6YSxibGVuZE1vZGU6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOm99KXtsZXQgZz1OdW1iZXIuTUFYX1ZBTFVFLGM9TnVtYmVyLk1BWF9WQUxVRSxsPU51bWJlci5NSU5fVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO2NvbnN0IEM9WyJxIl07dCYmQy5wdXNoKHQpO2kmJkMucHVzaChgJHtpWzBdfSAke2lbMV19ICR7aVsyXX0gUkdgKTthJiZDLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IHJnYCk7Y29uc3QgUT10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1RLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3RbdCxpLGEscl09byhDLFEuc3ViYXJyYXkoZSxlKzgpKTtnPU1hdGgubWluKGcsdCk7bD1NYXRoLm1heChsLGkpO2M9TWF0aC5taW4oYyxhKTtoPU1hdGgubWF4KGgscil9Qy5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oQy5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7ciYmZi5zZXQoIkJNIixOYW1lLmdldChyKSk7Im51bWJlciI9PXR5cGVvZiBzJiZmLnNldCgiQ0EiLHMpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLGwsaF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBuO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtpLnB1dChhLHtkYXRhOnN9KX1lbHNlIG49dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJm4uc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtpLnB1dChyLHtkYXRhOm59KTtyZXR1cm57cmVmOnJ9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oaSx0LGEpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KGksdCxyP3thcDpyfTp7fSksbj1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cyx4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOmEuZXZhbHVhdG9yT3B0aW9uc30pO2kucmVmJiYobi5yZWY9bi5yZWZUb1JlcGxhY2U9aS5yZWYpO3JldHVybiBufX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3IuYW5ub3RhdGlvblR5cGU9Vjt2b2lkIDA9PT1yLmZpZWxkTmFtZSYmKHIuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09ci5hY3Rpb25zJiYoci5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksdCxwQSkpO2xldCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7ci5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShzKTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO3IuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2lmKHZvaWQgMD09PXMmJmEueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtyLmZpZWxkVmFsdWU9cz1hLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1zJiZudWxsIT09ci5kZWZhdWx0RmllbGRWYWx1ZSYmKHIuZmllbGRWYWx1ZT1yLmRlZmF1bHRGaWVsZFZhbHVlKTtyLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7ci5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1yLmZpZWxkVmFsdWUmJm51bGwhPT1yLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtyLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBnPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGM9YS5hY3JvRm9ybS5nZXQoIkRSIiksbD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6ZyxhY3JvRm9ybVJlc291cmNlczpjLGFwcGVhcmFuY2VSZXNvdXJjZXM6bCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbZyxsLGNdLG1lcmdlU3ViRGljdHM6ITB9KX07ci5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyLmZpZWxkRmxhZ3MpfHxyLmZpZWxkRmxhZ3M8MCkmJihyLmZpZWxkRmxhZ3M9MCk7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyQSk7ci5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhzQSk7ci5oaWRkZW49dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncywkKXx8dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyx0QSl9X2RlY29kZUZvcm1WYWx1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZT0+InN0cmluZyI9PXR5cGVvZiBlKSkubWFwKChlPT5zdHJpbmdUb1BERlN0cmluZyhlKSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsdEEpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gYTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpe2lmKGkmQyYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpO2NvbnN0IHI9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaSxhKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1yKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGksYSk7Y29uc3Qgcz1uZXcgT3BlcmF0b3JMaXN0O2lmKCF0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8bnVsbD09PXIpcmV0dXJue29wTGlzdDpzLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Y29uc3Qgbj0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZpJmMpLG89WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZz1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKTtsZXQgbDt0aGlzLm9jJiYobD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWwmJnMuYWRkT3AoS2UsWyJPQyIsbF0pO3MuYWRkT3AoVmUsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxnLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksbl0pO2NvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnN9KTtzLmFkZE9wKFplLFtdKTt2b2lkIDAhPT1sJiZzLmFkZE9wKFRlLFtdKTtyZXR1cm57b3BMaXN0OnMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOm59fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsaSxhKXtjb25zdHtkaWN0OnIscmVmOnN9PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxpKXtjb25zdCBhPW5ldyBSZWZTZXQscj1lLHM9e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIWEuaGFzKHQpOyl7YS5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHM7ZT1pLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09cil7cy5kaWN0PWU7cy5yZWY9dH1yZXR1cm4gc30oZSx0aGlzLnJlZixpKTtpZihyKXtpZighYS5oYXMocykpe2NvbnN0IGU9ci5jbG9uZSgpO2Uuc2V0KCJWIix0KTthLnB1dChzLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsaSxyKXtjb25zdCBzPWk/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IG89cz8udmFsdWUsZz1zPy5yb3RhdGlvbjtpZihvPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PW8pe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWcmJnZvaWQgMD09PW4pcmV0dXJuO298fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1nJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KG8pJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKG8sdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1nJiYoZz10aGlzLnJvdGF0aW9uKTtsZXQgYz1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2M9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaCxpKTtpZihudWxsPT09YyYmdm9pZCAwPT09bilyZXR1cm59bGV0IGw9ITE7aWYoYz8ubmVlZEFwcGVhcmFuY2VzKXtsPSEwO2M9bnVsbH1jb25zdHt4cmVmOkN9PWUsUT1DLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoUSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBFPW5ldyBEaWN0KEMpO2Zvcihjb25zdCBlIG9mIFEuZ2V0S2V5cygpKSJBUCIhPT1lJiZFLnNldChlLFEuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtFLnNldCgiRiIsbik7aWYobnVsbD09PWMmJiFsKXtjb25zdCBlPVEuZ2V0UmF3KCJBUCIpO2UmJkUuc2V0KCJBUCIsZSl9fWNvbnN0IHU9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvfSxkPXRoaXMuc2V0VmFsdWUoRSxBcnJheS5pc0FycmF5KG8pP28ubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUobyksQyxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGksZHx8RSk7Y29uc3QgZj10aGlzLl9nZXRNS0RpY3QoZyk7ZiYmRS5zZXQoIk1LIixmKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpFLHhmYTp1LG5lZWRBcHBlYXJhbmNlczpsfSk7aWYobnVsbCE9PWMpe2NvbnN0IGU9Qy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KEMpO0Uuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHM9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKEMpLG49bmV3IFN0cmluZ1N0cmVhbShjKSxvPW4uZGljdD1uZXcgRGljdChDKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7by5zZXQoIlJlc291cmNlcyIscyk7by5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSk7ZyE9PWEmJm8uc2V0KCJNYXRyaXgiLGcpO3IucHV0KGUse2RhdGE6bix4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KX1FLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCl9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGksYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcob0EpKXJldHVybiBudWxsO2NvbnN0IHI9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbjtpZihyKXtzPXIuZm9ybWF0dGVkVmFsdWV8fHIudmFsdWU7bj1yLnJvdGF0aW9ufWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGc9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoYSk7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2A7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IGMsbD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTtsPWMubGVuZ3RofWVsc2UgYz1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldCBDPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLFE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1uJiYyNzAhPT1ufHwoW1EsQ109W0MsUV0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2xldCBFLHUsZCxmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y29uc3QgcD1bXTtsZXQgbT0hMTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PWYuZW5jb2RlU3RyaW5nKGUpO3QubGVuZ3RoPjEmJihtPSEwKTtwLnB1c2godC5qb2luKCIiKSl9aWYobSYmaSZoKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKG0mJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixhPW5ldyBGYWtlVW5pY29kZUZvbnQoZS54cmVmLGkpLHI9YS5jcmVhdGVGb250UmVzb3VyY2VzKGMuam9pbigiIikpLG49ci5nZXRSYXcoIkZvbnQiKTtpZih0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuaGFzKCJGb250Iikpe2NvbnN0IGU9dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmdldCgiRm9udCIpO2Zvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKWUuc2V0KHQsbi5nZXRSYXcodCkpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsbik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Zj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXBbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9Z31lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpfWxldCB5PWYuZGVzY2VudDt5PWlzTmFOKHkpP28qZDpNYXRoLm1heChvKmQsTWF0aC5hYnMoeSkqdSk7Y29uc3Qgdz1NYXRoLm1pbihNYXRoLmZsb29yKChDLXUpLzIpLDEpLGI9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShFLHAsZix1LFEsQyxiLDIsdyx5LGQsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKEUsZixwWzBdLHUsUSxDLDIsdyx5LGQsYSk7Y29uc3QgRD13K3k7aWYoMD09PWJ8fGI+MilyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcoRCl9IFRtICgke2VzY2FwZVN0cmluZyhwWzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQocFswXSxmLHUsUSxiLHtzaGlmdDowfSwyLEQpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsaSxhKXtjb25zdCByPW5ldyBPcGVyYXRvckxpc3Qscz17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6bixmb250U2l6ZTpvfT1pO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChhLFtuJiZOYW1lLmdldChuKSxvXSxudWxsLHIsdCxzLG51bGwpO3JldHVybiBzLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsaSxhLHIpe2xldHtmb250U2l6ZTpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KG58fDEyKSpzLGc9TWF0aC5yb3VuZChlL28pO2lmKCFuKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgoaSxhKTtuPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3MsdC9yKSk7Zz0xfWVsc2V7Y29uc3QgYz1pLnNwbGl0KC9cclxuP3xcbi8pLGw9W107Zm9yKGNvbnN0IGUgb2YgYyl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxpPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtsLnB1c2goe2xpbmU6dCxnbHlwaHM6aSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWk9PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIGwpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsaSx0LHMpLmxlbmd0aCppO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Zz1NYXRoLm1heChnLHIpO2Zvcig7Oyl7bz1lL2c7bj1yb3VuZFdpdGhUd29EaWdpdHMoby9zKTtpZighaXNUb29CaWcobikpYnJlYWs7ZysrfX1jb25zdHtmb250TmFtZTpjLGZvbnRDb2xvcjpsfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOml9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGksITApfWB9KHtmb250U2l6ZTpuLGZvbnROYW1lOmMsZm9udENvbG9yOmx9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbixlL2ddfV9yZW5kZXJUZXh0KGUsdCxpLGEscixzLG4sbyl7bGV0IGc7aWYoMT09PXIpe2c9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaSkvMn1lbHNlIGlmKDI9PT1yKXtnPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaS1ufWVsc2UgZz1uO2NvbnN0IGM9bnVtYmVyVG9TdHJpbmcoZy1zLnNoaWZ0KTtzLnNoaWZ0PWc7cmV0dXJuYCR7Y30gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6aSxhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsaV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9YS5nZXQoIkZvbnQiKTtpZihpIGluc3RhbmNlb2YgRGljdCYmaS5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixpLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9JDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpKXx8aTwwfHxpPjIpJiYoaT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1pO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhCQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhsQSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhDQSl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCl7Y29uc3QgaD1yL3RoaXMuZGF0YS5tYXhMZW4sQz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhsKSxRPVtdLEU9dC5nZXRDaGFyUG9zaXRpb25zKGkpO2Zvcihjb25zdFtlLHRdb2YgRSlRLnB1c2goYCgke2VzY2FwZVN0cmluZyhpLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgdT1RLmpvaW4oYCAke251bWJlclRvU3RyaW5nKGgpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtDfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhuKX0gJHtudW1iZXJUb1N0cmluZyhvK2cpfSBUbSAke3V9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLGwsaCl7Y29uc3QgQz1bXSxRPXItMipvLEU9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHMsaSxhLFEpO2ZvcihsZXQgdD0wLHM9aC5sZW5ndGg7dDxzO3QrKyl7Y29uc3Qgcz1oW3RdLFE9MD09PWUmJjA9PT10Py1nLShsLWMpOi1sO0MucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHMsaSxhLHIsbixFLG8sUSkpfX1jb25zdCB1PXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGQ9Qy5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHt1fUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHMpfSBUbSAke2R9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxpLGEscj17fSl7ZT1yLmxpbmV8fGU7Y29uc3Qgcz1yLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHMubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBuPXIucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1pLzFlMyxnPVtdO2xldCBjPS0xLGw9LTEsaD0tMSxDPTAsUT0wO2ZvcihsZXQgdD0wLGk9cy5sZW5ndGg7dDxpO3QrKyl7Y29uc3RbaSxyXT1uW3RdLEU9c1t0XSx1PUUud2lkdGgqbztpZigiICI9PT1FLnVuaWNvZGUpaWYoUSt1PmEpe2cucHVzaChlLnN1YnN0cmluZyhDLGkpKTtDPWk7UT11O2M9LTE7aD0tMX1lbHNle1ErPXU7Yz1pO2w9cjtoPXR9ZWxzZSBpZihRK3U+YSlpZigtMSE9PWMpe2cucHVzaChlLnN1YnN0cmluZyhDLGwpKTtDPWw7dD1oKzE7Yz0tMTtRPTB9ZWxzZXtnLnB1c2goZS5zdWJzdHJpbmcoQyxpKSk7Qz1pO1E9dX1lbHNlIFErPXV9QzxlLmxlbmd0aCYmZy5wdXNoKGUuc3Vic3RyaW5nKEMsZS5sZW5ndGgpKTtyZXR1cm4gZ31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsaSk7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHI9YS5qb2luKCJcbiIpO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcz1yLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIikpO25ldyBSZWdFeHAoYF5cXHMqJHtzfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhvQSksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhJQSk7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLCExLHIpO2xldCBzPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIpO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgbz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKG8pe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGc9bG9va3VwTWF0cml4KG8uZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7biYmby5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpKTt0aGlzLmFwcGVhcmFuY2U9bztjb25zdCBjPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyKTt0aGlzLmFwcGVhcmFuY2U9cztvLmRpY3Quc2V0KCJNYXRyaXgiLGcpO3JldHVybiBjfXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGksYSl7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsaSxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24mJnRoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsaSxhKX1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTt0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKTtvJiZ0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHI9WzAsMCxpLGFdLHM9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnMsaGVpZ2h0Oi43MDUqc307bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnMsaGVpZ2h0Oi43MDUqc307bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtzfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2wuc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixsKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHI9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHM9aS5nZXRLZXlzKCk7aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKChlPT4iT2ZmIiE9PWUpKTtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixlKX1zLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9c1sxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHI9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I6bnVsbDtjb25zdCBzPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoY0EpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhoQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpO2xldCByLG47Y29uc3Qgbz1hPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cj1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXImJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cj9yPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgbD10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgQz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvbDtsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxDKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LEMsLTEpfWNvbnN0IHU9RSpzLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxsKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LEMsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TjtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1HO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ajt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksWikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZXZhbHVhdG9yT3B0aW9uczp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6YX09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGkpLnBhcnNlKCl9KHRoaXMuYXBwZWFyYW5jZSx0LGkpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUudHJpbUVuZCgpKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDppfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxpKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1lLmRpY3QuZ2V0KCJDQSIpLHM9bmV3IEZha2VVbmljb2RlRm9udChpLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPXMuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhLHQscik7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLGZvbnRTaXplOnMsb2xkQW5ub3RhdGlvbjpuLHJlY3Q6byxyb3RhdGlvbjpnLHVzZXI6Yyx2YWx1ZTpsfT1lLGg9bnx8bmV3IERpY3QodCk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO2lmKG4pe2guc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLmRlbGV0ZSgiUkMiKX1lbHNlIGguc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixvKTtjb25zdCBDPWAvSGVsdiAke3N9IFRmICR7Z2V0UGRmQ29sb3IociwhMCl9YDtoLnNldCgiREEiLEMpO2guc2V0KCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aC5zZXQoIkYiLDQpO2guc2V0KCJCb3JkZXIiLFswLDAsMF0pO2guc2V0KCJSb3RhdGUiLGcpO2MmJmguc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpsLHZhbHVlOmh9PWUsQz1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1DLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxDKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7bCUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49cypnLEc9MSpnLE09Tip3Lmxlbmd0aDtNPnkmJihSPXkvTSk7Y29uc3QgVT1nKk1hdGgubWluKGssUik7bGV0IHgsTCxIO3N3aXRjaChsKXtjYXNlIDA6SD1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07eD1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTt4PVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTt4PVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO3g9Wy1jWzNdLGNbMl0tR119Y29uc3QgSj1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFUpfSBUZmBdO0oucHVzaChgJHt4LmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCB2PW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0oucHVzaChgMCAtJHt2fSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUoucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1KLmpvaW4oIlxuIiksSz1uZXcgRGljdCh0KTtLLnNldCgiRm9ybVR5cGUiLDEpO0suc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtLLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Sy5zZXQoIkJCb3giLGMpO0suc2V0KCJSZXNvdXJjZXMiLEMpO0suc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgVD1uZXcgU3RyaW5nU3RyZWFtKFkpO1QuZGljdD1LO3JldHVybiBUfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxsPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLGwpfHwodGhpcy5yZWN0YW5nbGU9bCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0tZyx0WzJdK2csdFs3XS1nLHRbM10rZ119fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2l9ICR7YX0gJHtyfSAke259IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1MO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscz1yP2dldFBkZkNvbG9yQXJyYXkocik6bnVsbCxuPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsbD0oci1pKS8yKm8saD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytsfSAke259ICR7cn0gJHtjK2h9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtaH0gJHtnK2x9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctbH0gJHthfSAke2l9ICR7Yy1ofSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2h9ICR7Zy1sfSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1KO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShhKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MipzLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKXtvWzBdPU1hdGgubWluKG9bMF0scltlXS1uKTtvWzFdPU1hdGgubWluKG9bMV0scltlKzFdLW4pO29bMl09TWF0aC5tYXgob1syXSxyW2VdK24pO29bM109TWF0aC5tYXgob1szXSxyW2UrMV0rbil9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3N9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUh9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU99fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Vzt0aGlzLmRhdGEuaW5rTGlzdHM9W107dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe2lmKCFBcnJheS5pc0FycmF5KGFbZV0pKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShhW2VdLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCByPTAscz1hW2VdLmxlbmd0aDtyPHM7cis9Mil7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVtlXVtyXSksbj1pLmZldGNoSWZSZWYoYVtlXVtyKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygbil7dFtyXT1zO3RbcisxXT1ufX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqcixuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpe25bMF09TWF0aC5taW4oblswXSxlW3RdLXMpO25bMV09TWF0aC5taW4oblsxXSxlW3QrMV0tcyk7blsyXT1NYXRoLm1heChuWzJdLGVbdF0rcyk7blszXT1NYXRoLm1heChuWzNdLGVbdCsxXStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKz0yKWUucHVzaChgJHt0W2ldfSAke3RbaSsxXX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpyLGNvbG9yOnMsb3BhY2l0eTpuLHBhdGhzOm8sb3V0bGluZXM6ZyxyZWN0OmMscm90YXRpb246bCx0aGlja25lc3M6aCx1c2VyOkN9PWUsUT1yfHxuZXcgRGljdCh0KTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO1Euc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW5rIikpO1Euc2V0KHI/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO1Euc2V0KCJSZWN0IixjKTtRLnNldCgiSW5rTGlzdCIsZz8ucG9pbnRzfHxvLnBvaW50cyk7US5zZXQoIkYiLDQpO1Euc2V0KCJSb3RhdGUiLGwpO0MmJlEuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKEMpKTtnJiZRLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgRT1uZXcgRGljdCh0KTtRLnNldCgiQlMiLEUpO0Uuc2V0KCJXIixoKTtRLnNldCgiQyIsQXJyYXkuZnJvbShzLChlPT5lLzI1NSkpKTtRLnNldCgiQ0EiLG4pO2NvbnN0IHU9bmV3IERpY3QodCk7US5zZXQoIkFQIix1KTtpP3Uuc2V0KCJOIixpKTp1LnNldCgiTiIsYSk7cmV0dXJuIFF9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBzLmxpbmVzKXtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixpPWUubGVuZ3RoO3Q8aTt0Kz02KWlmKGlzTmFOKGVbdF0pKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2ksYSxyLHMsbixvXT1lLnNsaWNlKHQsdCs2KTtnLnB1c2goW2ksYSxyLHMsbixvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWcucHVzaCgiUyIpO2NvbnN0IGM9Zy5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixyKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtsLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhzW2UrNF0pfSAke251bWJlclRvU3RyaW5nKHNbZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsaSxhLHIsbixnXT1zLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsaSxhLHIsbixnXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGc9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2wuc2V0KCJFeHRHU3RhdGUiLGgpO2Muc2V0KCJSZXNvdXJjZXMiLGwpO2NvbnN0IEM9bmV3IERpY3QodCk7aC5zZXQoIlIwIixDKTtDLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7Qy5zZXQoImNhIixuKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBRPW5ldyBTdHJpbmdTdHJlYW0oZyk7US5kaWN0PWM7cmV0dXJuIFF9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLG9sZEFubm90YXRpb246cyxvcGFjaXR5Om4scmVjdDpvLHJvdGF0aW9uOmcsdXNlcjpjLHF1YWRQb2ludHM6bH09ZSxoPXN8fG5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7aC5zZXQocz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLG8pO2guc2V0KCJGIiw0KTtoLnNldCgiQm9yZGVyIixbMCwwLDBdKTtoLnNldCgiUm90YXRlIixnKTtoLnNldCgiUXVhZFBvaW50cyIsbCk7aC5zZXQoIkMiLEFycmF5LmZyb20ociwoZT0+ZS8yNTUpKSk7aC5zZXQoIkNBIixuKTtjJiZoLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtoLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixpfHxhKX1yZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnIsb3V0bGluZXM6cyxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl0sZz1bXTtmb3IoY29uc3QgZSBvZiBzKXtnLmxlbmd0aD0wO2cucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTIpZy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtnLnB1c2goImgiKTtvLnB1c2goZy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7bC5zZXQoIkJCb3giLHIpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsQyk7bC5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgUT1uZXcgRGljdCh0KTtDLnNldCgiUjAiLFEpO1Euc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtRLnNldCgiY2EiLG4pO1Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IEU9bmV3IFN0cmluZ1N0cmVhbShjKTtFLmRpY3Q9bDtyZXR1cm4gRX19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUs7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFsxXS10WzVdKS82O2xldCBhPWkscj10WzRdO2NvbnN0IHM9dFs1XSxuPXRbNl07ZS5wdXNoKGAke3J9ICR7cythfSBtYCk7ZG97cis9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7cn0gJHtzK2F9IGxgKX13aGlsZShyPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNUO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1xO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7aWYoZSl7aWYoIXRoaXMuZGF0YS5pc0VkaXRhYmxlKXJldHVybiExO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhczt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3JldHVybiEwfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jVDtyZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGcpe3MuZmlsbFN0eWxlPSJ3aGl0ZSI7cy5maWxsUmVjdCgwLDAsaSxhKTtzLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgYz1yLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGw9TmFtZS5nZXQoIlhPYmplY3QiKSxoPU5hbWUuZ2V0KCJJbWFnZSIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIlR5cGUiLGwpO0Muc2V0KCJTdWJ0eXBlIixoKTtDLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7Qy5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7Qy5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtDLnNldCgiQkJveCIsWzAsMCxpLGFdKTtDLnNldCgiV2lkdGgiLGkpO0Muc2V0KCJIZWlnaHQiLGEpO2xldCBRPW51bGw7aWYoZyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3Qgcj1uZXcgRGljdCh0KTtyLnNldCgiVHlwZSIsbCk7ci5zZXQoIlN1YnR5cGUiLGgpO3Iuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtyLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7ci5zZXQoIldpZHRoIixpKTtyLnNldCgiSGVpZ2h0IixhKTtRPW5ldyBTdHJlYW0oZSwwLDAscil9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgYywwLDAsQyksc21hc2tTdHJlYW06USx3aWR0aDppLGhlaWdodDphfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OnMscm90YXRpb246bix1c2VyOm99PWUsZz1yfHxuZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zy5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIlJlY3QiLHMpO2cuc2V0KCJGIiw0KTtnLnNldCgiQm9yZGVyIixbMCwwLDBdKTtnLnNldCgiUm90YXRlIixuKTtvJiZnLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2k/ZS5zZXQoIk4iLGkpOmUuc2V0KCJOIixhKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnIsd2lkdGg6cyxoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHIpO2NvbnN0IGM9YHEgJHtzfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxsPW5ldyBEaWN0KHQpO2wuc2V0KCJGb3JtVHlwZSIsMSk7bC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtsLnNldCgiQkJveCIsWzAsMCxzLG5dKTtsLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxuKTtsLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHI9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1yIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhyLm5hbWUpOiJQdXNoUGluIjtjb25zdCBzPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6bnVsbH19Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1pO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWkrZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsaSk7dGhpcy5idWZmZXJMZW5ndGg9YX19Y2xhc3MgQVJDRm91ckNpcGhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmE9MDt0aGlzLmI9MDtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1NiksaT1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2ElaV0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxpPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBuPTA7bjxyOysrbil7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtpPWkrciYyNTU7Y29uc3Qgbz1hW2ldO2FbdF09bzthW2ldPXI7c1tuXT1lW25dXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPWk7cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y29uc3QgZW89ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goaSxhLHIpe2xldCBzPTE3MzI1ODQxOTMsbj0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsZz0yNzE3MzM4Nzg7Y29uc3QgYz1yKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLEM7Zm9yKGg9MDtoPHI7KytoKWxbaF09aVthKytdO2xbaCsrXT0xMjg7Y29uc3QgUT1jLTg7Zm9yKDtoPFE7KWxbaCsrXT0wO2xbaCsrXT1yPDwzJjI1NTtsW2grK109cj4+NSYyNTU7bFtoKytdPXI+PjEzJjI1NTtsW2grK109cj4+MjEmMjU1O2xbaCsrXT1yPj4+MjkmMjU1O2xbaCsrXT0wO2xbaCsrXT0wO2xbaCsrXT0wO2NvbnN0IEU9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihoPTA7aDxjOyl7Zm9yKEM9MDtDPDE2OysrQyxoKz00KUVbQ109bFtoXXxsW2grMV08PDh8bFtoKzJdPDwxNnxsW2grM108PDI0O2xldCBpLGEscj1zLGM9bixRPW8sdT1nO2ZvcihDPTA7Qzw2NDsrK0Mpe2lmKEM8MTYpe2k9YyZRfH5jJnU7YT1DfWVsc2UgaWYoQzwzMil7aT11JmN8fnUmUTthPTUqQysxJjE1fWVsc2UgaWYoQzw0OCl7aT1jXlFedTthPTMqQys1JjE1fWVsc2V7aT1RXihjfH51KTthPTcqQyYxNX1jb25zdCBzPXUsbj1yK2krdFtDXStFW2FdfDAsbz1lW0NdO3U9UTtRPWM7Yz1jKyhuPDxvfG4+Pj4zMi1vKXwwO3I9c31zPXMrcnwwO249bitjfDA7bz1vK1F8MDtnPWcrdXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmcsZz4+OCYyNTUsZz4+MTYmMjU1LGc+Pj4yNCYyNTVdKX19KCk7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGk7aWYoMzImZSl7aT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7aT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8aTw8MzItZTt0aGlzLmhpZ2g9aT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGk9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihpKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8aX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdG89ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2Q2xvc3VyZSgpe2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjaChlLHQsaSl7cmV0dXJuIGUmdF5+ZSZpfWZ1bmN0aW9uIG1haihlLHQsaSl7cmV0dXJuIGUmdF5lJmledCZpfWZ1bmN0aW9uIHNpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWNvbnN0IGU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEpe2xldCByPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixvPTI3NzM0ODA3NjIsZz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgQz02NCpNYXRoLmNlaWwoKGErOSkvNjQpLFE9bmV3IFVpbnQ4QXJyYXkoQyk7bGV0IEUsdTtmb3IoRT0wO0U8YTsrK0UpUVtFXT10W2krK107UVtFKytdPTEyODtjb25zdCBkPUMtODtmb3IoO0U8ZDspUVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPWE+Pj4yOSYyNTU7UVtFKytdPWE+PjIxJjI1NTtRW0UrK109YT4+MTMmMjU1O1FbRSsrXT1hPj41JjI1NTtRW0UrK109YTw8MyYyNTU7Y29uc3QgZj1uZXcgVWludDMyQXJyYXkoNjQpO2ZvcihFPTA7RTxDOyl7Zm9yKHU9MDt1PDE2OysrdSl7Zlt1XT1RW0VdPDwyNHxRW0UrMV08PDE2fFFbRSsyXTw8OHxRW0UrM107RSs9NH1mb3IodT0xNjt1PDY0OysrdSlmW3VdPShyb3RyKHA9Zlt1LTJdLDE3KV5yb3RyKHAsMTkpXnA+Pj4xMCkrZlt1LTddK2xpdHRsZVNpZ21hKGZbdS0xNV0pK2ZbdS0xNl18MDtsZXQgdCxpLGE9cixDPXMsZD1uLG09byx5PWcsdz1jLGI9bCxEPWg7Zm9yKHU9MDt1PDY0OysrdSl7dD1EK3NpZ21hUHJpbWUoeSkrY2goeSx3LGIpK2VbdV0rZlt1XTtpPXNpZ21hKGEpK21haihhLEMsZCk7RD1iO2I9dzt3PXk7eT1tK3R8MDttPWQ7ZD1DO0M9YTthPXQraXwwfXI9cithfDA7cz1zK0N8MDtuPW4rZHwwO289byttfDA7Zz1nK3l8MDtjPWMrd3wwO2w9bCtifDA7aD1oK0R8MH12YXIgcDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3I+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaF0pfX0oKSxpbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGksYSxyKXtlLmFzc2lnbih0KTtlLmFuZChpKTtyLmFzc2lnbih0KTtyLm5vdCgpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIG1haihlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3IuYW5kKGEpO2UueG9yKHIpO3IuYXNzaWduKGkpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIHNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihpKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg3KTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNik7ZS54b3IoaSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhLHI9ITEpe2xldCBzLG4sbyxnLGMsbCxoLEM7aWYocil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2c9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7Qz1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtnPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7Qz1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBRPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksRT1uZXcgVWludDhBcnJheShRKTtsZXQgdSxkO2Zvcih1PTA7dTxhOysrdSlFW3VdPXRbaSsrXTtFW3UrK109MTI4O2NvbnN0IGY9US0xNjtmb3IoO3U8ZjspRVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPWE+Pj4yOSYyNTU7RVt1KytdPWE+PjIxJjI1NTtFW3UrK109YT4+MTMmMjU1O0VbdSsrXT1hPj41JjI1NTtFW3UrK109YTw8MyYyNTU7Y29uc3QgcD1uZXcgQXJyYXkoODApO2Zvcih1PTA7dTw4MDt1KyspcFt1XT1uZXcgV29yZDY0KDAsMCk7bGV0IG09bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHc9bmV3IFdvcmQ2NCgwLDApLGI9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE49bmV3IFdvcmQ2NCgwLDApLEc9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLFU9bmV3IFdvcmQ2NCgwLDApO2xldCB4LEw7Zm9yKHU9MDt1PFE7KXtmb3IoZD0wO2Q8MTY7KytkKXtwW2RdLmhpZ2g9RVt1XTw8MjR8RVt1KzFdPDwxNnxFW3UrMl08PDh8RVt1KzNdO3BbZF0ubG93PUVbdSs0XTw8MjR8RVt1KzVdPDwxNnxFW3UrNl08PDh8RVt1KzddO3UrPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe3g9cFtkXTtsaXR0bGVTaWdtYVByaW1lKHgscFtkLTJdLFUpO3guYWRkKHBbZC03XSk7bGl0dGxlU2lnbWEoTSxwW2QtMTVdLFUpO3guYWRkKE0pO3guYWRkKHBbZC0xNl0pfW0uYXNzaWduKHMpO3kuYXNzaWduKG4pO3cuYXNzaWduKG8pO2IuYXNzaWduKGcpO0QuYXNzaWduKGMpO1MuYXNzaWduKGwpO2suYXNzaWduKGgpO1IuYXNzaWduKEMpO2ZvcihkPTA7ZDw4MDsrK2Qpe04uYXNzaWduKFIpO3NpZ21hUHJpbWUoTSxELFUpO04uYWRkKE0pO2NoKE0sRCxTLGssVSk7Ti5hZGQoTSk7Ti5hZGQoZVtkXSk7Ti5hZGQocFtkXSk7c2lnbWEoRyxtLFUpO21haihNLG0seSx3LFUpO0cuYWRkKE0pO3g9UjtSPWs7az1TO1M9RDtiLmFkZChOKTtEPWI7Yj13O3c9eTt5PW07eC5hc3NpZ24oTik7eC5hZGQoRyk7bT14fXMuYWRkKG0pO24uYWRkKHkpO28uYWRkKHcpO2cuYWRkKGIpO2MuYWRkKEQpO2wuYWRkKFMpO2guYWRkKGspO0MuYWRkKFIpfWlmKHIpe0w9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKX1lbHNle0w9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKTtoLmNvcHlUbyhMLDQ4KTtDLmNvcHlUbyhMLDU2KX1yZXR1cm4gTH19KCk7Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGksYSxyO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpc1tlXV49dFtpXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2k9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPXRoaXMuX2ludl9zW3NbZV1dO2ZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2Epc1tpXV49dFthXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3NbZV1dLGE9dGhpcy5fbWl4W3NbZSsxXV0scj10aGlzLl9taXhbc1tlKzJdXSxuPXRoaXMuX21peFtzW2UrM11dO2k9dF5hPj4+OF5hPDwyNF5yPj4+MTZecjw8MTZebj4+PjI0Xm48PDg7c1tlXT1pPj4+MjQmMjU1O3NbZSsxXT1pPj4xNiYyNTU7c1tlKzJdPWk+PjgmMjU1O3NbZSszXT0yNTUmaX19aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtzW2VdPXRoaXMuX2ludl9zW3NbZV1dO3NbZV1ePXRbZV19cmV0dXJuIHN9X2VuY3J5cHQoZSx0KXtjb25zdCBpPXRoaXMuX3M7bGV0IGEscixzO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1uW2UrMF0saT1uW2UrMV0scj1uW2UrMl0scz1uW2UrM107YT10Xmlecl5zO25bZSswXV49YV50aGlzLl9taXhDb2xbdF5pXTtuW2UrMV1ePWFedGhpcy5fbWl4Q29sW2lecl07bltlKzJdXj1hXnRoaXMuX21peENvbFtyXnNdO25bZSszXV49YV50aGlzLl9taXhDb2xbc150XX1mb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKW5baV1ePXRbYV19Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKW5bZV1ePXRbaV07cmV0dXJuIG59X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO2xldCBuPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtyXT1lW3RdOysrcjtpZihyPDE2KWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5fZGVjcnlwdChhLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49bltlXTtuPWE7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj1uO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqcy5sZW5ndGg7aWYodCl7Y29uc3QgZT1zLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBpPTE1LGE9MTYtdDtpPj1hOy0taSlpZihlW2ldIT09dCl7dD0wO2JyZWFrfW8tPXQ7c1tzLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilnLnNldChzW2VdLHQpO3JldHVybiBnfWRlY3J5cHRCbG9jayhlLHQsaT1udWxsKXtjb25zdCBhPWUubGVuZ3RoLHI9dGhpcy5idWZmZXI7bGV0IHM9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihpKXRoaXMuaXY9aTtlbHNle2ZvcihsZXQgdD0wO3M8MTYmJnQ8YTsrK3QsKytzKXJbc109ZVt0XTtpZihzPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1zO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PXI7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBuPTA7bjxpOysrbil7YVtyXT1lW25dOysrcjtpZihyPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXRbZV07Y29uc3QgaT10aGlzLl9lbmNyeXB0KGEsdGhpcy5fa2V5KTt0PWk7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj10O2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgbj0xNipzLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpby5zZXQoc1tlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPXRoaXMuX3Jjb24sYT1uZXcgVWludDhBcnJheSgxNzYpO2Euc2V0KGUpO2ZvcihsZXQgZT0xNixyPTE7ZTwxNzY7KytyKXtsZXQgcz1hW2UtM10sbj1hW2UtMl0sbz1hW2UtMV0sZz1hW2UtNF07cz10W3NdO249dFtuXTtvPXRbb107Zz10W2ddO3NePWlbcl07Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1zXj1hW2UtMTZdO2UrKzthW2VdPW5ePWFbZS0xNl07ZSsrO2FbZV09b149YVtlLTE2XTtlKys7YVtlXT1nXj1hW2UtMTZdO2UrK319cmV0dXJuIGF9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPW5ldyBVaW50OEFycmF5KDI0MCk7aS5zZXQoZSk7bGV0IGEscixzLG4sbz0xO2ZvcihsZXQgZT0zMixnPTE7ZTwyNDA7KytnKXtpZihlJTMyPT0xNil7YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dfWVsc2UgaWYoZSUzMj09MCl7YT1pW2UtM107cj1pW2UtMl07cz1pW2UtMV07bj1pW2UtNF07YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dO2FePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXtpW2VdPWFePWlbZS0zMl07ZSsrO2lbZV09cl49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPW5ePWlbZS0zMl07ZSsrfX1yZXR1cm4gaX19Y2xhc3MgUERGMTd7Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhyLDAsci5sZW5ndGgpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhhLDAsYS5sZW5ndGgpLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10byhyLDAsci5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9dG8oYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYyMHtfaGFzaChlLHQsaSl7bGV0IGE9dG8odCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtpLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KHQpO2xldCBsPTA7Yy5zZXQoZSxsKTtsKz1lLmxlbmd0aDtjLnNldChhLGwpO2wrPWEubGVuZ3RoO2Muc2V0KGksbCk7Y29uc3QgaD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxpPTA7ZTw2NDtlKyssaSs9dCloLnNldChjLGkpO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGgsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IEM9ci5zbGljZSgwLDE2KS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApJTM7MD09PUM/YT10byhyLDAsci5sZW5ndGgpOjE9PT1DP2E9KG49cixvPTAsZz1yLmxlbmd0aCxpbyhuLG8sZywhMCkpOjI9PT1DJiYoYT1pbyhyLDAsci5sZW5ndGgpKTtzKyt9dmFyIG4sbyxnO3JldHVybiBhLnN1YmFycmF5KDAsMzIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHIsaSksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxhLFtdKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dGhpcy5faGFzaChlLHIsaSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUsYSxbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBpPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gaS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZGVjcnlwdEJsb2NrKGksITApO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgaT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpLnJlcGVhdChpKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgcj1zdHJpbmdUb0J5dGVzKGUpO3I9dC5lbmNyeXB0KHIsYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNityLmxlbmd0aCk7cy5zZXQoYSk7cy5zZXQociwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocyl9bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMjcT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pOyNPKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IEM9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gQy5jaGVja1VzZXJQYXNzd29yZCh0LG8sbik/Qy5nZXRVc2VyS2V5KHQsZyxsKTp0Lmxlbmd0aCYmQy5jaGVja093bmVyUGFzc3dvcmQodCxhLHMsaSk/Qy5nZXRPd25lcktleSh0LHIscyxjKTpudWxsfSNQKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz00MCtpLmxlbmd0aCtlLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGcpO2xldCBsLGgsQz0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7QzxoOysrQyljW0NdPXRbQ119bD0wO2Zvcig7QzwzMjspY1tDKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbCsrXTtmb3IobD0wLGg9aS5sZW5ndGg7bDxoOysrbCljW0MrK109aVtsXTtjW0MrK109MjU1JnI7Y1tDKytdPXI+PjgmMjU1O2NbQysrXT1yPj4xNiYyNTU7Y1tDKytdPXI+Pj4yNCYyNTU7Zm9yKGw9MCxoPWUubGVuZ3RoO2w8aDsrK2wpY1tDKytdPWVbbF07aWYocz49NCYmIW8pe2NbQysrXT0yNTU7Y1tDKytdPTI1NTtjW0MrK109MjU1O2NbQysrXT0yNTV9bGV0IFE9ZW8oYywwLEMpO2NvbnN0IEU9bj4+MztpZihzPj0zKWZvcihsPTA7bDw1MDsrK2wpUT1lbyhRLDAsRSk7Y29uc3QgdT1RLnN1YmFycmF5KDAsRSk7bGV0IGQsZjtpZihzPj0zKXtmb3IoQz0wO0M8MzI7KytDKWNbQ109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jcVtDXTtmb3IobD0wLGg9ZS5sZW5ndGg7bDxoOysrbCljW0MrK109ZVtsXTtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soZW8oYywwLEMpKTtoPXUubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaCk7Zm9yKGw9MTtsPD0xOTsrK2wpe2ZvcihsZXQgZT0wO2U8aDsrK2UpdFtlXT11W2VdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcih0KTtmPWQuZW5jcnlwdEJsb2NrKGYpfWZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfWVsc2V7ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3EpO2ZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfXJldHVybiB1fSNXKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBzPTA7Y29uc3Qgbj1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtzPG47KytzKXJbc109ZVtzXTtsZXQgbz0wO2Zvcig7czwzMjspcltzKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbysrXTtsZXQgZz1lbyhyLDAscyk7Y29uc3QgYz1hPj4zO2lmKGk+PTMpZm9yKG89MDtvPDUwOysrbylnPWVvKGcsMCxnLmxlbmd0aCk7bGV0IGwsaDtpZihpPj0zKXtoPXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShjKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxjOysrdCllW3RdPWdbdF1ebztsPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO2g9bC5lbmNyeXB0QmxvY2soaCl9fWVsc2V7bD1uZXcgQVJDRm91ckNpcGhlcihnLnN1YmFycmF5KDAsYykpO2g9bC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIGh9I2ooZSx0LGksYT0hMSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShpLmxlbmd0aCs5KSxzPWkubGVuZ3RoO2xldCBuO2ZvcihuPTA7bjxzOysrbilyW25dPWlbbl07cltuKytdPTI1NSZlO3JbbisrXT1lPj44JjI1NTtyW24rK109ZT4+MTYmMjU1O3JbbisrXT0yNTUmdDtyW24rK109dD4+OCYyNTU7aWYoYSl7cltuKytdPTExNTtyW24rK109NjU7cltuKytdPTEwODtyW24rK109ODR9cmV0dXJuIGVvKHIsMCxuKS5zdWJhcnJheSgwLE1hdGgubWluKGkubGVuZ3RoKzUsMTYpKX0jWChlLHQsaSxhLHIpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBzPXRoaXMsbj1lLmdldCh0Lm5hbWUpLG89bj8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIocy4jaihpLGEsciwhMSkpfTtpZigiQUVTVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMTI4Q2lwaGVyKHMuI2ooaSxhLHIsITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsaSl7Y29uc3QgYT1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShhLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1hLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3Qgcj1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwxIT09ciYmMiE9PXImJjQhPT1yJiY1IT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09cjtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIXMpaWYocjw9MylzPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxpPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmkgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGkubmFtZSk7cz1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7czw0MCYmKHM8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIocyl8fHM8NDB8fHMlOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IG49c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksZz1uLnN1YmFycmF5KDAsMzIpLGM9by5zdWJhcnJheSgwLDMyKSxsPWUuZ2V0KCJQIiksaD1lLmdldCgiUiIpLEM9KDQ9PT1yfHw1PT09cikmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPUM7Y29uc3QgUT1zdHJpbmdUb0J5dGVzKHQpO2xldCBFLHU7aWYoaSl7aWYoNj09PWgpdHJ5e2k9dXRmOFN0cmluZ1RvU3RyaW5nKGkpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1FPXN0cmluZ1RvQnl0ZXMoaSl9aWYoNSE9PXIpdT10aGlzLiNQKFEsRSxnLGMsbCxoLHMsQyk7ZWxzZXtjb25zdCB0PW4uc3ViYXJyYXkoMzIsNDApLGk9bi5zdWJhcnJheSg0MCw0OCksYT1vLnN1YmFycmF5KDAsNDgpLHI9by5zdWJhcnJheSgzMiw0MCkscz1vLnN1YmFycmF5KDQwLDQ4KSxsPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksUT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTt1PXRoaXMuI08oaCxFLGcsdCxpLGEsYyxyLHMsbCxDLFEpfWlmKCF1JiYhaSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixvdCk7aWYoIXUmJmkpe2NvbnN0IGU9dGhpcy4jVyhFLGcsaCxzKTt1PXRoaXMuI1AoUSxlLGcsYyxsLGgscyxDKX1pZighdSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsZ3QpO3RoaXMuZW5jcnlwdGlvbktleT11O2lmKHI+PTQpe2NvbnN0IHQ9ZS5nZXQoIkNGIik7dCBpbnN0YW5jZW9mIERpY3QmJih0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj10O3RoaXMuc3RtZj1lLmdldCgiU3RtRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLnN0cmY9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5lZmY9ZS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHRoaXMuI1godGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jWCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgaT10aGlzLiNqKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLGNpcGhlckNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGkpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShjaXBoZXJDb25zdHJ1Y3RvcixjaXBoZXJDb25zdHJ1Y3Rvcil9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjVj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczppfT1lLGE9dC5nZXQoIlciKSxyPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczpyLGJ5dGVXaWR0aHM6YSxlbnRyeU51bTowLHN0cmVhbVBvczppfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxyXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W24sb109cztpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxvOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBsPXt9O2wub2Zmc2V0PWc7bC5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOmwuZnJlZT0hMDticmVhaztjYXNlIDE6bC51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3NdfHwodGhpcy5lbnRyaWVzW24rc109bCl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09aVtyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IGw9bi5zdGFydDtjb25zdCBoPVtdLEM9W107Zm9yKDtsPGM7KXtsZXQgUT1vW2xdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK2w7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK2w7aWYobD49YylicmVhaztRPW9bbF19d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sbCk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe2wrPXNraXBVbnRpbChvLGwsYSk7aC5wdXNoKGwpO2wrPXNraXBVbnRpbChvLGwscil9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1sK0UubGVuZ3RoO2xldCByLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0Omwtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3I9ZS5sYXN0SW5kZXgrMS1sO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3ItPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcj1jLWw7Y29uc3QgZD1vLnN1YmFycmF5KGwsbCtyKSxmPXNraXBVbnRpbChkLDAscyk7aWYoZjxyJiZkW2YrNV08NjQpe0MucHVzaChsLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChsLW4uc3RhcnQpfWwrPXJ9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKGwpO2NvbnN0IGU9bCtFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1sO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1sO2wrPWl9ZWxzZSBsKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIEMpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFRLmxlbmd0aClmb3IoY29uc3RbZSx0XW9mIHRoaXMuZW50cmllcy5lbnRyaWVzKCkpe2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9UmVmLmdldChlLHQuZ2VuKTtsZXQgYTt0cnl7YT10aGlzLmZldGNoKGkpfWNhdGNoe2NvbnRpbnVlfWEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT1hLmRpY3QpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiUm9vdCIpKXJldHVybiBhfXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHIscz1hLmdldE9iaigpO2lmKGlzQ21kKHMsInhyZWYiKSl7cj10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXIpO3M9ci5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHMpKXt0aGlzLl94cmVmU3Rtcy5hZGQocyk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpO3RoaXMuI1Y/Pz1zfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocz1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHMpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cz1yLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocyk/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpOnMgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI1Y/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHI9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cil7dGhpcy5fY2FjaGVNYXAuc2V0KGkscik7cmV0dXJuIHJ9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBRdH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3I9ci51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHIsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxyLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1yIGluc3RhbmNlb2YgRGljdD9yLm9iaklkPWUudG9TdHJpbmcoKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHIuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCByPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcz1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHMpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocix0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IHM9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1yfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtyPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihyKSlyZXR1cm4gcn10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHIsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHI9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBzPXIuZGljdC5nZXQoIkZpcnN0Iiksbj1yLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IGw9KHIuc3RhcnR8fDApK3MsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoci5tYWtlU3ViU3RyZWFtKGwrY1tlXSx0LHIuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHM9Z1tlXSxDPXRoaXMuZW50cmllc1tzXTtDJiZDLm9mZnNldD09PWEmJkMuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHMsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgYW89WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpDfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9cjt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1DO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fGFvKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7Y29uc3QgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IiwibnVtYmVyIj09dHlwZW9mIGUmJmU+MD9lOjEpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgaT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGkmJmlbMl0taVswXT4wJiZpWzNdLWlbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGkpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI1ooZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWk/LnB1dChlKTtyLnJlZj1lO2EucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKChlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0pLCgoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHM9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksbj1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI1ooaSxuLG8pO2NvbnN0IGc9dGhpcy5wYWdlRGljdCxjPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJm4uaGFzKGUpKSkpLGw9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHMsdCxpLGEscik7Zm9yKGNvbnN0e3JlZjplfW9mIGwuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZjLnB1c2goZSk7Y29uc3QgaD1nLmNsb25lKCk7aC5zZXQoIkFubm90cyIsYyk7ci5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIG4pci5wdXQoZSx7ZGF0YTpudWxsfSl9c2F2ZShlLHQsaSxhKXtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3JldHVybiB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucy50aGVuKChmdW5jdGlvbihlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBuIG9mIGUpcy5wdXNoKG4uc2F2ZShyLHQsaSxhKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwocyl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGwsbW9kaWZpZWRJZHM6bj1udWxsfSl7Y29uc3Qgbz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxoPXRoaXMubG9hZFJlc291cmNlcyhbIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdKSx1PW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLGY9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAocykscD1mPy5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCBtPVByb21pc2UucmVzb2x2ZShudWxsKSx5PW51bGw7aWYocCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiBwKSFlfHx0fHxhLmhhcyhlKXx8YS5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6cn09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKGEuc2l6ZT4wKXtjb25zdCBlPXAuc2xpY2UoKTtmb3IoY29uc3RbdCxpXW9mIHMpdC5zdGFydHNXaXRoKGQpJiZpLmJpdG1hcCYmYS5oYXMoaS5iaXRtYXBJZCkmJmUucHVzaChpKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLHIpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhwLHRoaXMueHJlZixyKTt5PW5ldyBSZWZTZXQ7bT1Qcm9taXNlLmFsbChbZSx0aGlzLiNaKHAseSxudWxsKV0pLnRoZW4oKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSx1LGkscCx0KTpudWxsKSl9Y29uc3Qgdz1Qcm9taXNlLmFsbChbbyxoXSkudGhlbigoKFtzXSk9Pntjb25zdCBuPW5ldyBPcGVyYXRvckxpc3QoYSx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp1Lmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6cn0pO3JldHVybiB1LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnMsdGFzazppLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt3LHRoaXMuX3BhcnNlZEFubm90YXRpb25zLG1dKS50aGVuKChmdW5jdGlvbihbZSx0LHJdKXtpZihyKXt0PXQuZmlsdGVyKChlPT4hKGUucmVmJiZ5LmhhcyhlLnJlZikpKSk7Zm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBhPXJbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHM9dC5maW5kSW5kZXgoKGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpKTtpZihzPj0wKXt0LnNwbGljZShzLDEsYSk7ci5zcGxpY2UoZS0tLDEpO2ktLX19fXQ9dC5jb25jYXQocil9aWYoMD09PXQubGVuZ3RofHxhJlEpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3Qgbz0hIShhJkMpLGg9ISEoYSZFKSxkPSEhKGEmZyksZj0hIShhJmMpLHA9ISEoYSZsKSxtPVtdO2Zvcihjb25zdCBlIG9mIHQpKGR8fGYmJmUubXVzdEJlVmlld2VkKHMsbykmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoaCxuKXx8cCYmZS5tdXN0QmVQcmludGVkKHMpKSYmbS5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsaSxhLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztjb25zdCB0PWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKTtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0LCJzZXJpYWxpemFibGUiKX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtjb25zdCByPVtdLHM9W107bGV0IG47Y29uc3Qgbz0hIShpJmcpLGg9ISEoaSZjKSxDPSEhKGkmbCk7Zm9yKGNvbnN0IGkgb2YgYSl7Y29uc3QgYT1vfHxoJiZpLnZpZXdhYmxlOyhhfHxDJiZpLnByaW50YWJsZSkmJnIucHVzaChpLmRhdGEpO2lmKGkuaGFzVGV4dENvbnRlbnQmJmEpe258fD1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtzLnB1c2goaS5leHRyYWN0VGV4dENvbnRlbnQobix0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIHJ9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxpXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9aT8ub3JwaGFuRmllbGRzLHI9W107Zm9yKGNvbnN0IGkgb2YgZSlyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixpLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSx0aGlzLnJlZikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtjb25zdCBzPVtdO2xldCBuLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocikpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8obnx8PVtdKS5wdXNoKGUpOnMucHVzaChlKSk7byYmcy5wdXNoKC4uLm8pO24mJnMucHVzaCguLi5uKTtyZXR1cm4gc30pKSl9Z2V0IGpzQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIixjb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCx5QSkpfX1jb25zdCBybz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxzbz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLG5vPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsaT0xMDI0LGE9ITEpe2NvbnN0IHI9dC5sZW5ndGgscz1lLnBlZWtCeXRlcyhpKSxuPXMubGVuZ3RoLXI7aWYobjw9MClyZXR1cm4hMTtpZihhKXtjb25zdCBpPXItMTtsZXQgYT1zLmxlbmd0aC0xO2Zvcig7YT49aTspe2xldCBuPTA7Zm9yKDtuPHImJnNbYS1uXT09PXRbaS1uXTspbisrO2lmKG4+PXIpe2UucG9zKz1hLWk7cmV0dXJuITB9YS0tfX1lbHNle2xldCBpPTA7Zm9yKDtpPD1uOyl7bGV0IGE9MDtmb3IoO2E8ciYmc1tpK2FdPT09dFthXTspYSsrO2lmKGE+PXIpe2UucG9zKz1pO3JldHVybiEwfWkrK319cmV0dXJuITF9Y2xhc3MgUERGRG9jdW1lbnR7Y29uc3RydWN0b3IoZSx0KXtpZih0Lmxlbmd0aDw9MCl0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IFhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgaT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytpLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLG5vKSl7ZS5za2lwKDYpO2xldCBpPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShpKTspe2UucG9zKys7aT1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IGk9MTAyNCxhPXNvLmxlbmd0aDtsZXQgcj0hMSxzPWUuZW5kO2Zvcig7IXImJnM+MDspe3MtPWktYTtzPDAmJihzPTApO2UucG9zPXM7cj1maW5kKGUsc28saSwhMCl9aWYocil7ZS5za2lwKDkpO2xldCBpO2Rve2k9ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKGkpKTtsZXQgYT0iIjtmb3IoO2k+PTMyJiZpPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoaSk7aT1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxybykpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHJvLmxlbmd0aCk7bGV0IHQsaT0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmaS5sZW5ndGg8NzspaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTttdC50ZXN0KGkpP3RoaXMuX3ZlcnNpb249aTp3YXJuKGBJbnZhbGlkIFBERiBoZWFkZXIgdmVyc2lvbjogJHtpfWApfXBhcnNlU3RhcnRYUmVmKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9Z2V0IG51bVBhZ2VzKCl7bGV0IGU9MDtlPXRoaXMuY2F0YWxvZy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLmNhdGFsb2cubnVtUGFnZXM6dGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXROdW1QYWdlcygpOnRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dGhpcy5jYXRhbG9nLm51bVBhZ2VzO3JldHVybiBzaGFkb3codGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgaT1pc05hbWUoZS5nZXQoIkZUIiksIlNpZyIpLGE9ZS5nZXQoIlJlY3QiKSxyPUFycmF5LmlzQXJyYXkoYSkmJmEuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGkmJnJ9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksaT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXtpWyJ4ZHA6eGRwIl09dDtyZXR1cm4gaX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCByO3I9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFpLmhhc093blByb3BlcnR5KHIpKWNvbnRpbnVlO2NvbnN0IHM9dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eSYmKGlbcl09cyl9cmV0dXJuIGl9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgaT1lW3RdO2lmKGkpdHJ5e2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGkuZ2V0U3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG5ldyBEYXRhc2V0UmVhZGVyKHtbdF06ZX0pKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoYSl0cnl7dFtpXT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IFhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jIGxvYWRYZmFJbWFnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldEtleXMoKSxpPW5ldyBPYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgaS5sb2FkKCk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoaSk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuc2V0KGksdC5nZXRCeXRlcygpKX10aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGEpfWFzeW5jIGxvYWRYZmFGb250cyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWkpcmV0dXJuO2NvbnN0IGE9YXdhaXQgaS5nZXRBc3luYygiRFIiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGEsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCByLmxvYWQoKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKTtuLnVzZVN5c3RlbUZvbnRzPSExO2NvbnN0IG89bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5jYXRhbG9nLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuY2F0YWxvZy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLmNhdGFsb2cuc3RhbmRhcmRGb250RGF0YUNhY2hlLG9wdGlvbnM6bn0pLGc9bmV3IE9wZXJhdG9yTGlzdCxjPVtdLGw9e2dldCBmb250KCl7cmV0dXJuIGMuYXQoLTEpfSxzZXQgZm9udChlKXtjLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxoPVtdO2Zvcihjb25zdFtlLGldb2Ygcyl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmgucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsbCxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwoaCk7Y29uc3QgQz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIUMpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2gubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBRPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgQylnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fFEuYWRkKGUpO1Euc2l6ZSYmQy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIEMpaWYoIVEuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtoLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LGwscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGgpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLFEpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGksYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7aT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBpPWVvKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFt0b0hleFV0aWwoaSksYT90b0hleFV0aWwoYSk6bnVsbF0pfWFzeW5jIF9nZXRMaW5lYXJpemF0aW9uUGFnZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjppLHhyZWY6YX09dGhpcyxyPVJlZi5nZXQoaS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBpPWUuZ2V0UmF3KCJUeXBlIik7aSBpbnN0YW5jZW9mIFJlZiYmKGk9YXdhaXQgYS5mZXRjaEFzeW5jKGkpKTtpZihpc05hbWUoaSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocil8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChyLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHIpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChyLDApO3JldHVybltlLHJdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChpKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2kubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6aSxsaW5lYXJpemF0aW9uOmEseGZhRmFjdG9yeTpyfT10aGlzO2xldCBzO3M9cj9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOmE/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6aS5nZXRQYWdlRGljdChlKTtzPXMudGhlbigoKFt0LGFdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOmEsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6aS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTppLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmkuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6aS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTppLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0Omkubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnJ9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKTtyZXR1cm4gc31hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6aX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IGE7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjthPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocil7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHIgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke2F9LmApO2xldCBzO3RyeXtzPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW2Escl1db2Ygcyl7bGV0IHM7aWYoYSBpbnN0YW5jZW9mIEVycm9yKXtzPVByb21pc2UucmVqZWN0KGEpO3MuY2F0Y2goKCgpPT57fSkpfWVsc2Ugcz1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6aSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKX10LnNldEFjdHVhbE51bVBhZ2VzKHMuc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjXyhlLHQsaSxhLHIscyxuKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShpIGluc3RhbmNlb2YgUmVmKXx8cy5oYXMoaSkpcmV0dXJuO3MucHV0KGkpO2NvbnN0IGc9YXdhaXQgby5mZXRjaEFzeW5jKGkpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihnLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGcuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBpPWc7Zm9yKDs7KXtpPWkuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihpIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhpKSlicmVhaztpPWF3YWl0IG8uZmV0Y2hBc3luYyhpKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGkuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YDticmVha319fXQmJiFnLmhhcygiUGFyZW50IikmJmlzTmFtZShnLmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSYmbi5wdXQoaSx0KTthLmhhcyhlKXx8YS5zZXQoZSxbXSk7YS5nZXQoZSkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxpLHIsbnVsbCwhMCxuLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIWcuaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IGM9YXdhaXQgZy5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYykpZm9yKGNvbnN0IHQgb2YgYylhd2FpdCB0aGlzLiNfKGUsaSx0LGEscixzLG4pfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKChhc3luYyBlPT57aWYoIWUuaGFzRmllbGRzKXJldHVybiBudWxsO2NvbnN0W3QsaV09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBSZWZTZXQscj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxuPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhd2FpdCBpLmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNfKCIiLG51bGwsZSxzLHQsYSxuKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcylvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihyW2VdPXQpfSkpKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOnIsb3JwaGFuRmllbGRzOm59fSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtPy5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fDA9PT1lLmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSlpIGluc3RhbmNlb2YgUmVmJiZ0LnB1c2goaS50b1N0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLHQubGVuZ3RoP3Q6bnVsbCl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7ZS5ldmFsdWF0b3JPcHRpb25zLmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBvbz0xLGdvPTIsSW89MSxjbz0yLGxvPTMsaG89NCxDbz01LEJvPTYsUW89NyxFbz04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjej1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1pO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTtpLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuIyQuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI3ouc2lnbmFsfSl9IyQoe2RhdGE6ZX0pe2lmKGUudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI0FBKGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdCB0PWUuY2FsbGJhY2tJZCxpPXRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAke3R9YCk7ZGVsZXRlIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoZS5jYWxsYmFjaz09PW9vKWkucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PWdvKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7aS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmo7UHJvbWlzZS50cnkodCxlLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsY2FsbGJhY2s6b28sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9KSwoZnVuY3Rpb24odCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxjYWxsYmFjazpnbyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfWVsc2UgZS5zdHJlYW1JZD90aGlzLiNlQShlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihpW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtpW2VdPXR9c2VuZChlLHQsaSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0saSl9c2VuZFdpdGhQcm9taXNlKGUsdCxpKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHI9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1yO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0saSl9Y2F0Y2goZSl7ci5yZWplY3QoZSl9cmV0dXJuIHIucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsaSxhKXtjb25zdCByPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSxuPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omk9Pntjb25zdCBnPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6aSxzdGFydENhbGw6ZyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixhY3Rpb246ZSxzdHJlYW1JZDpyLGRhdGE6dCxkZXNpcmVkU2l6ZTppLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gZy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpCbyxzdHJlYW1JZDpyLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06SW8sc3RyZWFtSWQ6cixyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxpKX0jZUEoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpobyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkNvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkobixlLmRhdGEsbykudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I0FBKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIEVvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFFvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBCbzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7UHJvbWlzZS50cnkobi5vblB1bGx8fG9uRm4pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgaG86YXNzZXJ0KHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgbG86YXNzZXJ0KHMsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmlzQ2xvc2VkPSEwO3MuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBDbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBjbzplLnN1Y2Nlc3M/cy5jYW5jZWxDYWxsLnJlc29sdmUoKTpzLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiN0QShzLHQpO2JyZWFrO2Nhc2UgSW86aWYoIW4pYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShuLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO24uaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjdEEoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI3o/LmFib3J0KCk7dGhpcy4jej1udWxsfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsaSx7ZW5jcnlwdDphPW51bGx9KXtjb25zdCByPWE/LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik7aS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdCh0LGkscik6dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0odCxpLHIpOihBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZhd2FpdCB3cml0ZUFycmF5KHQsaSxyKTtpLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGkpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgYSBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhhKSx0LGkpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsaSl7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6cn09ZSxbcyxuXT1hd2FpdCBQcm9taXNlLmFsbChbci5nZXRBc3luYygiRmlsdGVyIiksci5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocyk/YXdhaXQgci54cmVmLmZldGNoSWZSZWZBc3luYyhzWzBdKTpzLCJGbGF0ZURlY29kZSIpO2lmKGEubGVuZ3RoPj0yNTZ8fG8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShhKS50aGVuKChhc3luYygpPT57YXdhaXQgdC5yZWFkeTthd2FpdCB0LmNsb3NlKCl9KSkuY2F0Y2goKCgpPT57fSkpO2NvbnN0IGk9YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmFycmF5QnVmZmVyKCk7YT1uZXcgVWludDhBcnJheShpKTtsZXQgZyxjO2lmKHMpe2lmKCFvKXtnPUFycmF5LmlzQXJyYXkocyk/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnNdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxzXTtuJiYoYz1BcnJheS5pc0FycmF5KG4pP1tudWxsLC4uLm5dOltudWxsLG5dKX19ZWxzZSBnPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO2cmJnIuc2V0KCJGaWx0ZXIiLGcpO2MmJnIuc2V0KCJEZWNvZGVQYXJtcyIsYyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBnPWJ5dGVzVG9TdHJpbmcoYSk7aSYmKGc9aS5lbmNyeXB0U3RyaW5nKGcpKTtyLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHIsdCxpKTt0LnB1c2goIiBzdHJlYW1cbiIsZywiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxpKXt0LnB1c2goIlsiKTtsZXQgYT0hMDtmb3IoY29uc3QgciBvZiBlKXthP2E9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShyLHQsaSl9dC5wdXNoKCJdIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsaSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IHdyaXRlQXJyYXkoZSx0LGkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtpJiYoZT1pLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChudW1iZXJUb1N0cmluZyhlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGkpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxpKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGksYSl7Zm9yKGxldCByPXQraS0xO3I+aS0xO3ItLSl7YVtyXT0yNTUmZTtlPj49OH1yZXR1cm4gaSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaVt0K2FdPTI1NSZlLmNoYXJDb2RlQXQoYSl9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmkseHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBpPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9cGFyc2VYRkFQYXRoKHQpO2xldCBzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUociwwKTshcyYmci5sZW5ndGg+MSYmKHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbci5hdCgtMSldLDApKTtzP3MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KGEpP2EubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtpLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksaSl9Y29uc3Qgcj1uZXcgU3RyaW5nU3RyZWFtKGUpO3IuZGljdD1uZXcgRGljdChhKTtyLmRpY3Quc2V0KCJUeXBlIixOYW1lLmdldCgiRW1iZWRkZWRGaWxlIikpO2kucHV0KHQse2RhdGE6cn0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOml9b2YgZSlpLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGkubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGkpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBpPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1baS50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1yLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7ci5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXt3cml0ZVN0cmluZyhlLG8sbik7bys9ZS5sZW5ndGh9cmV0dXJuIGJ5dGVzVG9TdHJpbmcoZW8obikpfShlLHQpO2kuc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LGNoYW5nZXM6aSx4cmVmOmE9bnVsbCxoYXNYZmE6cj0hMSx4ZmFEYXRhc2V0c1JlZjpzPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTpuPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmc9bnVsbCxhY3JvRm9ybTpjPW51bGwseGZhRGF0YTpsPW51bGwsdXNlWHJlZlN0cmVhbTpoPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOmksaGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpyLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm4sY2hhbmdlczpvfSl7IWF8fHJ8fHN8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIW4mJighYXx8IXN8fHIpKXJldHVybjtjb25zdCBnPXQuY2xvbmUoKTtpZihhJiYhcil7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHMpO2cuc2V0KCJYRkEiLGUpfW4mJmcuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtvLnB1dChpLHtkYXRhOmd9KX0oe3hyZWY6YSxhY3JvRm9ybTpjLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOnIsaGFzWGZhRGF0YXNldHNFbnRyeTpuLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm8sY2hhbmdlczppfSk7ciYmdXBkYXRlWEZBKHt4ZmFEYXRhOmwseGZhRGF0YXNldHNSZWY6cyxjaGFuZ2VzOmkseHJlZjphfSk7Y29uc3QgQz1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldCgiUHJldiIsZS5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYoaSl7dC5wdXQocix7ZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIsci5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCksUT1bXSxFPWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlcyhlLHQsaT1bXSl7Y29uc3QgYT1bXTtmb3IoY29uc3Rbcix7ZGF0YTpzfV1vZiBlLml0ZW1zKCkpaWYobnVsbCE9PXMmJiJzdHJpbmciIT10eXBlb2Ygcyl7YXdhaXQgd3JpdGVPYmplY3QocixzLGksdCk7YS5wdXNoKHtyZWY6cixkYXRhOmkuam9pbigiIil9KTtpLmxlbmd0aD0wfWVsc2UgYS5wdXNoKHtyZWY6cixkYXRhOnN9KTtyZXR1cm4gYS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpfShpLGEsUSk7bGV0IHU9ZS5sZW5ndGg7Y29uc3QgZD1lLmF0KC0xKTtpZigxMCE9PWQmJjEzIT09ZCl7US5wdXNoKCJcbiIpO3UrPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBFKW51bGwhPT1lJiZRLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxyKXtjb25zdCBzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtzLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3MucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksbD1uZXcgVWludDhBcnJheShjKnMubGVuZ3RoKSxoPW5ldyBTdHJlYW0obCk7aC5kaWN0PWE7bGV0IEM9MDtmb3IoY29uc3RbZSx0LGldb2Ygcyl7Qz13cml0ZUludChlLGdbMF0sQyxsKTtDPXdyaXRlSW50KHQsZ1sxXSxDLGwpO0M9d3JpdGVJbnQoaSxnWzJdLEMsbCl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxyLHt9KTtyLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LHUsRSxDLFEpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHIpe3IucHVzaCgieHJlZlxuIik7Y29uc3Qgcz1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXNbbl0pe3IucHVzaChgJHtzW25dfSAke3NbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3IucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSByLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtyLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHIpO3IucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCx1LEUsQyxRKSk7Y29uc3QgZj1RLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxwPW5ldyBVaW50OEFycmF5KGYpO3Auc2V0KGUpO2xldCBtPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIFEpe3dyaXRlU3RyaW5nKGUsbSxwKTttKz1lLmxlbmd0aH1yZXR1cm4gcH1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgaT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChpKTtyZXR1cm4gaX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fbXNnSGFuZGxlcj1pO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGE9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPWEuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2xldCBpPSExO2Uub24oInRlc3QiLCh0PT57aWYoIWkpe2k9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGU9PnshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKEl0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC4xMC4zOCI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgbD1bXTtmb3IoY29uc3QgZSBpbltdKWwucHVzaChlKTtpZihsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitsLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IEM9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhDLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO0Muc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7Qy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2kudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTtDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsd3JhcFJlYXNvbihlKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgbD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOkMsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfTtpZihlKXtsLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGwpfWNvbnN0IGg9bmV3IFBERldvcmtlclN0cmVhbShDKSxRPWguZ2V0RnVsbFJlYWRlcigpLEU9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IHUsZD1bXSxmPTA7US5oZWFkZXJzUmVhZHkudGhlbigoZnVuY3Rpb24oKXtpZihRLmlzUmFuZ2VTdXBwb3J0ZWQpe2wuc291cmNlPWg7bC5sZW5ndGg9US5jb250ZW50TGVuZ3RoO2wuZGlzYWJsZUF1dG9GZXRjaHx8PVEuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dT1uZXcgTmV0d29ya1BkZk1hbmFnZXIobCk7Zm9yKGNvbnN0IGUgb2YgZCl1LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7ZD1bXTtFLnJlc29sdmUodSk7cj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe2lmKCF1KXtjb25zdCBlPWFycmF5QnVmZmVyc1RvQnl0ZXMoZCk7ZD1bXTtzJiZlLmxlbmd0aCE9PXMmJndhcm4oInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO2wuc291cmNlPWU7dT1uZXcgTG9jYWxQZGZNYW5hZ2VyKGwpO0UucmVzb2x2ZSh1KX1yPW51bGw7cmV0dXJufWYrPWUuYnl0ZUxlbmd0aDtRLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxDLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmYsdG90YWw6TWF0aC5tYXgoZixRLmNvbnRlbnRMZW5ndGh8fDApfSk7dT91LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6ZC5wdXNoKGUpO1EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtRLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO3I9ZT0+e2guY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBFLnByb21pc2V9KShlKS50aGVuKChmdW5jdGlvbihlKXtpZihhKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1pPWU7aS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKChlPT57Qy5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSkpfSkpLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9Qy5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmUoZSwicm90YXRlIiksaS5lbnN1cmUoZSwicmVmIiksaS5lbnN1cmUoZSwidXNlclVuaXQiKSxpLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGksYV0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDppLHZpZXc6YX19KSl9KSl9KSk7Qy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7Qy5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7Qy5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTtDLm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO0Mub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7Qy5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO0Mub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTtDLm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO0Mub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTtDLm9uKCJHZXREb2NKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pKTtDLm9uKCJHZXRQYWdlSlNBY3Rpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7Qy5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO0Mub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO0Mub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTtDLm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGkuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO0Mub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTtDLm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO0Mub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBpLmdldEFubm90YXRpb25zRGF0YShDLGEsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7dGhyb3cgZX0pKX0pKX0pKTtDLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO0Mub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7Qy5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO0Mub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6cn0pe2NvbnN0IHM9W2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksaS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGkuZW5zdXJlRG9jKCJ4cmVmIiksaS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxpLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLG49bmV3IFJlZlNldENhY2hlLG89W10sZz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2MsbCxoLFEsRSx1LGRdPWF3YWl0IFByb21pc2UuYWxsKHMpLGY9RS50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBwO2lmKGcpe2Q/YXdhaXQgZC5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmkseHJlZjpFLG5ld0Fubm90YXRpb25zQnlQYWdlOmd9KSYmKHA9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpnfSkmJihwPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxFLGkuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1wP286W107Zm9yKGNvbnN0W2Escl1vZiBnKXQucHVzaChpLmdldFBhZ2UoYSkudGhlbigodD0+e2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoQyxpLHIsZSxuKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO251bGw9PT1wP28ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYygpPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zyx4cmVmOkUsY2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxjaGFuZ2VzOm59KX0pKSk6cCYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jKCk9Pnthd2FpdCBwLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmcscGRmTWFuYWdlcjppLGNoYW5nZXM6bn0pfSkpKX1pZihlKW8ucHVzaChpLnNlcmlhbGl6ZVhmYURhdGEoYSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlKEMsaSxhLG4pLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7Y29uc3QgbT1hd2FpdCBQcm9taXNlLmFsbChvKTtsZXQgeT1udWxsO2lmKGUpe3k9bVswXTtpZigheSlyZXR1cm4gYy5ieXRlc31lbHNlIGlmKDA9PT1uLnNpemUpcmV0dXJuIGMuYnl0ZXM7Y29uc3Qgdz1oJiZsIGluc3RhbmNlb2YgRGljdCYmbi52YWx1ZXMoKS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGI9bCBpbnN0YW5jZW9mIERpY3QmJmwuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgRD1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBlPTAsdD1iLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09YltlXSl7RD1iW2UrMV07Uz0hMH1udWxsPT09RCYmKEQ9RS5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBiJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgaz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKEUudHJhaWxlcil7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9RS50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgdCkic3RyaW5nIj09dHlwZW9mIGEmJihlW2ldPXN0cmluZ1RvUERGU3RyaW5nKGEpKTtrPXtyb290UmVmOmYsZW5jcnlwdFJlZjpFLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOkUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpFLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6RS50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6dT9ROkUubGFzdFhSZWZTdHJlYW1Qb3M/P1EsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Yy5ieXRlcyx4cmVmSW5mbzprLGNoYW5nZXM6bix4cmVmOkUsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpoLGFjcm9Gb3JtOmwseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KEUudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntFLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7Qy5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PWJBP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpDLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhyKTtzJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktc31tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7ci50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO0Mub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6YSxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9PWU7aS5nZXRQYWdlKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrYSk7c3RhcnRXb3JrZXJUYXNrKGkpO2NvbnN0IG89bj49YkE/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOkMsdGFzazppLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSk7byYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtDLm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKX0pKX0pKTtDLm9uKCJGb250RmFsbGJhY2siLChmdW5jdGlvbihlKXtyZXR1cm4gaS5mb250RmFsbGJhY2soZS5pZCxDKX0pKTtDLm9uKCJDbGVhbnVwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2xlYW51cCghMCl9KSk7Qy5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24oZSl7YT0hMDtjb25zdCB0PVtdO2lmKGkpe2kudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWkuY2xlYW51cCgpO3QucHVzaChlKTtpPW51bGx9ZWxzZSBjbGVhckdsb2JhbENhY2hlcygpO3I/LihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7Qy5kZXN0cm95KCk7Qz1udWxsfSkpfSkpO0Mub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dmFyIHVvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e3VvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function rS(t,e,n){const l=t.contentWindow.document.createElement("style");l.textContent=`\n @page {\n margin: 3mm;\n size: ${e}pt ${n}pt;\n }\n body {\n margin: 0;\n }\n canvas {\n width: 100%;\n page-break-after: always;\n page-break-before: avoid;\n page-break-inside: avoid;\n }\n `,t.contentWindow.document.head.appendChild(l),t.contentWindow.document.body.style.width="100%"}function oS(t){return new Promise((e=>{const n=document.createElement("iframe");n.width="0",n.height="0",n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.border="none",n.style.overflow="hidden",n.onload=()=>e(n),t.appendChild(n)}))}function cS(t,e){const n=URL.createObjectURL(new Blob([t],{type:"application/pdf"})),l=document.createElement("a");l.href=n,l.download=e,l.style.display="none",document.body.append(l),l.click(),setTimeout((()=>{URL.revokeObjectURL(n),document.body.removeChild(l)}),1e3)}function dS(t){for(;null!=t&&t.firstChild;)t.removeChild(t.firstChild)}function uS(t){null==t||t.querySelectorAll("canvas").forEach((t=>{var e;t.width=1,t.height=1,null==(e=t.getContext("2d"))||e.clearRect(0,0,1,1)}))}function hS(t){return Object.prototype.hasOwnProperty.call(t,"_pdfInfo")}function mS({onError:t,onPasswordRequest:e,onProgress:n,source:l}){const i=(0,ji.IJ)(null),a=(0,ji.IJ)(null);return(0,r.nT)((async()=>{const s=(0,ji.BA)(l);if(s){if(hS(s))return void(i.value=s);try{a.value=aS(s),e&&(a.value.onPassword=(t,n)=>{e({callback:t,isWrongPassword:n===lS.INCORRECT_PASSWORD})}),n&&(a.value.onProgress=n),i.value=await a.value.promise}catch(lG){if(i.value=null,!t)throw lG;t(lG)}}})),(0,r.wB)(i,((t,e)=>{null==e||e.destroy()})),(0,r.xo)((()=>{var t,e,n,s;null!=(t=a.value)&&t.onPassword&&(a.value.onPassword=null),null!=(e=a.value)&&e.onProgress&&(a.value.onProgress=null),null==(n=a.value)||n.destroy(),hS((0,ji.BA)(l))||null==(s=i.value)||s.destroy()})),{doc:i}}var US={d:(t,e)=>{for(var n in e)US.o(e,n)&&!US.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},pS=globalThis.pdfjsViewer={};US.d(pS,{AnnotationLayerBuilder:()=>sQ,DownloadManager:()=>oQ,EventBus:()=>hQ,FindState:()=>UW,GenericL10n:()=>qy,LinkTarget:()=>iV,PDFFindController:()=>nV,PDFHistory:()=>WT,PDFLinkService:()=>oV,PDFPageView:()=>Ug,PDFScriptingManager:()=>Zg,PDFSinglePageViewer:()=>NE,PDFViewer:()=>ZE,ProgressBar:()=>HS,RenderingStates:()=>yS,ScrollMode:()=>gS,SimpleLinkService:()=>cV,SpreadMode:()=>ES,StructTreeLayerBuilder:()=>eM,TextLayerBuilder:()=>ZM,XfaLayerBuilder:()=>NM,parseQueryString:()=>JS});const FS="auto",bS=1,ZS=1.1,NS=.1,RS=10,SS=0,WS=1.25,VS=40,QS=5,yS={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},TS={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},MS={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},gS={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},ES={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};function GS(t,e,n=!1){let l=t.offsetParent;if(!l)return void console.error("offsetParent is not set -- cannot scroll");let i=t.offsetTop+t.clientTop,a=t.offsetLeft+t.clientLeft;for(;l.clientHeight===l.scrollHeight&&l.clientWidth===l.scrollWidth||n&&(l.classList.contains("markedContent")||"hidden"===getComputedStyle(l).overflow);)if(i+=l.offsetTop,a+=l.offsetLeft,l=l.offsetParent,!l)return;e&&(void 0!==e.top&&(i+=e.top),void 0!==e.left&&(a+=e.left,l.scrollLeft=a)),l.scrollTop=i}function BS(t,e,n=void 0){const l=function(n){a||(a=window.requestAnimationFrame((function(){a=null;const n=t.scrollLeft,l=i.lastX;n!==l&&(i.right=n>l),i.lastX=n;const s=t.scrollTop,r=i.lastY;s!==r&&(i.down=s>r),i.lastY=s,e(i)})))},i={right:!0,down:!0,lastX:t.scrollLeft,lastY:t.scrollTop,_eventHandler:l};let a=null;return t.addEventListener("scroll",l,{useCapture:!0,signal:n}),null==n||n.addEventListener("abort",(()=>window.cancelAnimationFrame(a)),{once:!0}),i}function JS(t){const e=new Map;for(const[n,l]of new URLSearchParams(t))e.set(n.toLowerCase(),l);return e}const kS=/[\x00-\x1F]/g;function YS(t,e=!1){return kS.test(t)?e?t.replaceAll(kS,(t=>"\0"===t?"":" ")):t.replaceAll("\0",""):t}function CS(t,e,n=0){let l=n,i=t.length-1;if(i<0||!e(t[i]))return t.length;if(e(t[l]))return l;for(;l>1,a=t[n];e(a)?i=n:l=n+1}return l}function XS(t){if(Math.floor(t)===t)return[t,1];const e=1/t,n=8;if(e>n)return[1,n];if(Math.floor(e)===e)return[1,e];const l=t>1?e:t;let i,a=0,s=1,r=1,o=1;for(;;){const t=a+r,e=s+o;if(e>n)break;l<=t/e?(r=t,o=e):(a=t,s=e)}return i=l-a/s=n&&(l=e[t-1].div,i=l.offsetTop+l.clientTop);for(let a=t-2;a>=0&&(l=e[a].div,!(l.offsetTop+l.clientTop+l.clientHeight<=i));--a)t=a;return t}function fS({scrollEl:t,views:e,sortByVisibility:n=!1,horizontal:l=!1,rtl:i=!1}){const a=t.scrollTop,s=a+t.clientHeight,r=t.scrollLeft,o=r+t.clientWidth;function c(t){const e=t.div;return e.offsetTop+e.clientTop+e.clientHeight>a}function d(t){const e=t.div,n=e.offsetLeft+e.clientLeft,l=n+e.clientWidth;return i?nr}const u=[],h=new Set,m=e.length;let U=CS(e,l?d:c);U>0&&U=s&&(p=F);else if((l?i:c)>p)break;if(F<=a||c>=s||U<=r||i>=o)continue;const b=Math.max(0,a-c)+Math.max(0,F-s),N=Math.max(0,r-i)+Math.max(0,U-o),R=(m-b)/m,S=(d-N)/d,W=R*S*100|0;u.push({id:t.id,x:i,y:c,view:t,percent:W,widthPercent:100*S|0}),h.add(t.id)}const F=u[0],b=u.at(-1);return n&&u.sort((function(t,e){const n=t.percent-e.percent;return Math.abs(n)>.001?-n:t.id-e.id})),{first:F,last:b,views:u,ids:h}}function LS(t){return Number.isInteger(t)&&t%90===0}function wS(t){return Number.isInteger(t)&&Object.values(gS).includes(t)&&t!==gS.UNKNOWN}function xS(t){return Number.isInteger(t)&&Object.values(ES).includes(t)&&t!==ES.UNKNOWN}function zS(t){return t.width<=t.height}new Promise((function(t){window.requestAnimationFrame(t)}));const vS=document.documentElement.style;function OS(t,e,n){return Math.min(Math.max(t,e),n)}var _S,jS,KS,PS,AS;class HS{constructor(t){ta(this,_S,null),ta(this,jS,null),ta(this,KS,0),ta(this,PS,null),ta(this,AS,!0),ea(this,_S,t.classList),ea(this,PS,t.style)}get percent(){return $i(this,KS)}set percent(t){ea(this,KS,OS(t,0,100)),isNaN(t)?$i(this,_S).add("indeterminate"):($i(this,_S).remove("indeterminate"),$i(this,PS).setProperty("--progressBar-percent",`${$i(this,KS)}%`))}setWidth(t){if(!t)return;const e=t.parentNode.offsetWidth-t.offsetWidth;e>0&&$i(this,PS).setProperty("--progressBar-end-offset",`${e}px`)}setDisableAutoFetch(t=5e3){100===$i(this,KS)||isNaN($i(this,KS))||($i(this,jS)&&clearTimeout($i(this,jS)),this.show(),ea(this,jS,setTimeout((()=>{ea(this,jS,null),this.hide()}),t)))}hide(){$i(this,AS)&&(ea(this,AS,!1),$i(this,_S).add("hidden"))}show(){$i(this,AS)||(ea(this,AS,!0),$i(this,_S).remove("hidden"))}}function qS(t){let e=gS.VERTICAL,n=ES.NONE;switch(t){case"SinglePage":e=gS.PAGE;break;case"OneColumn":break;case"TwoPageLeft":e=gS.PAGE;case"TwoColumnLeft":n=ES.ODD;break;case"TwoPageRight":e=gS.PAGE;case"TwoColumnRight":n=ES.EVEN;break}return{scrollMode:e,spreadMode:n}}_S=new WeakMap,jS=new WeakMap,KS=new WeakMap,PS=new WeakMap,AS=new WeakMap;const $S=function(){const t=document.createElement("div");return t.style.width="round(down, calc(1.6666666666666665 * 792px), 1px)","calc(1320px)"===t.style.width?Math.fround:t=>t}(),tW={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function eW(t){return t<11904}function nW(t){return 0===(65408&t)}function lW(t){return t>=97&&t<=122||t>=65&&t<=90}function iW(t){return t>=48&&t<=57}function aW(t){return 32===t||9===t||13===t||10===t}function sW(t){return t>=13312&&t<=40959||t>=63744&&t<=64255}function rW(t){return t>=12448&&t<=12543}function oW(t){return t>=12352&&t<=12447}function cW(t){return t>=65376&&t<=65439}function dW(t){return 3584===(65408&t)}function uW(t){return eW(t)?nW(t)?aW(t)?tW.SPACE:lW(t)||iW(t)||95===t?tW.ALPHA_LETTER:tW.PUNCT:dW(t)?tW.THAI_LETTER:160===t?tW.SPACE:tW.ALPHA_LETTER:sW(t)?tW.HAN_LETTER:rW(t)?tW.KATAKANA_LETTER:oW(t)?tW.HIRAGANA_LETTER:cW(t)?tW.HALFWIDTH_KATAKANA_LETTER:tW.ALPHA_LETTER}let hW;function mW(){return hW||(hW=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),hW}const UW={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},pW=250,FW=-50,bW=-400,ZW={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},NW=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let RW;const SW=new RegExp("\\p{M}+","gu"),WW=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),VW=new RegExp("([^\\p{M}])\\p{M}*$","u"),QW=new RegExp("^\\p{M}*([^\\p{M}])","u"),yW=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,TW=new Map,MW="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",gW=new Map;let EW=null,GW=null;function BW(t){const e=[];let n,l;for(;null!==(n=yW.exec(t));){let{index:t}=n;for(const l of n[0]){let n=TW.get(l);n||(n=l.normalize("NFD").length,TW.set(l,n)),e.push([n,t++])}}if(0===e.length&&EW)l=EW;else if(e.length>0&&GW)l=GW;else{const t=Object.keys(ZW).join(""),n=mW(),i=`([${t}])|([${n}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\p{Ll}-\\n\\p{Lu})|(\\S-\\n)|((?:\\p{Ideographic}|[぀-ヿ])\\n)|(\\n)`;l=0===e.length?EW=new RegExp(i+"|(\\u0000)","gum"):GW=new RegExp(i+`|(${MW})`,"gum")}const i=[];for(;null!==(n=SW.exec(t));)i.push([n[0].length,n.index]);let a=t.normalize("NFD");const s=[0,0];let r=0,o=0,c=0,d=0,u=0,h=!1;a=a.replace(l,((t,n,l,a,m,U,p,F,b,Z,N)=>{var R,S,W;if(N-=d,n){const t=ZW[n],e=t.length;for(let n=1;n>1),U=new Int32Array(s.length>>1);for(let p=0,F=s.length;p>1]=s[p],U[p>>1]=s[p+1];return[a,[m,U],h]}function JW(t,e,n){if(!t)return[e,n];const[l,i]=t,a=e,s=e+n-1;let r=CS(l,(t=>t>=a));l[r]>a&&--r;let o=CS(l,(t=>t>=s),r);l[o]>s&&--o;const c=a+i[r],d=s+i[o]+1-c;return[c,d]}var kW,YW,CW,XW,IW,DW,fW,LW,wW,xW,zW,vW,OW,_W,jW,KW,PW,AW,HW,qW,$W,tV,eV;class nV{constructor({linkService:t,eventBus:e,updateMatchesCountOnProgress:n=!0}){ta(this,XW),ta(this,kW,null),ta(this,YW,!0),ta(this,CW,0),this._linkService=t,this._eventBus=e,ea(this,YW,n),this.onIsPageVisible=null,na(this,XW,DW).call(this),e._on("find",na(this,XW,IW).bind(this)),e._on("findbarclose",na(this,XW,qW).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return $i(this,kW)}setDocument(t){this._pdfDocument&&na(this,XW,DW).call(this),t&&(this._pdfDocument=t,this._firstPageCapability.resolve())}scrollMatchIntoView({element:t=null,selectedLeft:e=0,pageIndex:n=-1,matchIndex:l=-1}){if(!this._scrollMatches||!t)return;if(-1===l||l!==this._selected.matchIdx)return;if(-1===n||n!==this._selected.pageIdx)return;this._scrollMatches=!1;const i={top:FW,left:e+bW};GS(t,i,!0)}match(t,e,n){const l=this._hasDiacritics[n];let i=!1;if("string"==typeof t?[i,t]=na(this,XW,xW).call(this,t,l):t=t.sort().reverse().map((t=>{const[e,n]=na(this,XW,xW).call(this,t,l);return i||(i=e),`(${n})`})).join("|"),!t)return;const{caseSensitive:a,entireWord:s}=$i(this,kW),r=`g${i?"u":""}${a?"":"i"}`;t=new RegExp(t,r);const o=[];let c;for(;null!==(c=t.exec(e));)s&&!na(this,XW,wW).call(this,e,c.index,c[0].length)||o.push({index:c.index,length:c[0].length});return o}}kW=new WeakMap,YW=new WeakMap,CW=new WeakMap,XW=new WeakSet,IW=function(t){if(!t)return;const e=this._pdfDocument,{type:n}=t;(null===$i(this,kW)||na(this,XW,LW).call(this,t))&&(this._dirtyMatch=!0),ea(this,kW,t),"highlightallchange"!==n&&na(this,XW,eV).call(this,UW.PENDING),this._firstPageCapability.promise.then((()=>{if(!this._pdfDocument||e&&this._pdfDocument!==e)return;na(this,XW,vW).call(this);const t=!this._highlightMatches,l=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),n?this._dirtyMatch?na(this,XW,jW).call(this):"again"===n?(na(this,XW,jW).call(this),t&&$i(this,kW).highlightAll&&na(this,XW,_W).call(this)):"highlightallchange"===n?(l?na(this,XW,jW).call(this):this._highlightMatches=!0,na(this,XW,_W).call(this)):na(this,XW,jW).call(this):this._findTimeout=setTimeout((()=>{na(this,XW,jW).call(this),this._findTimeout=null}),pW)}))},DW=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],ea(this,CW,0),ea(this,kW,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},fW=function(){const{query:t}=$i(this,kW);return"string"==typeof t?(t!==this._rawQuery&&(this._rawQuery=t,[this._normalizedQuery]=BW(t)),this._normalizedQuery):(t||[]).filter((t=>!!t)).map((t=>BW(t)[0]))},LW=function(t){var e;const n=t.query,l=$i(this,kW).query,i=typeof n;if(i!==typeof l)return!0;if("string"===i){if(n!==l)return!0}else if(JSON.stringify(n)!==JSON.stringify(l))return!0;switch(t.type){case"again":const t=this._selected.pageIdx+1,n=this._linkService;return t>=1&&t<=n.pagesCount&&t!==n.page&&!((null==(e=this.onIsPageVisible)?void 0:e.call(this,t))??1);case"highlightallchange":return!1}return!0},wW=function(t,e,n){let l=t.slice(0,e).match(VW);if(l){const n=t.charCodeAt(e),i=l[1].charCodeAt(0);if(uW(n)===uW(i))return!1}if(l=t.slice(e+n).match(QW),l){const i=t.charCodeAt(e+n-1),a=l[1].charCodeAt(0);if(uW(i)===uW(a))return!1}return!0},xW=function(t,e){const{matchDiacritics:n}=$i(this,kW);let l=!1;t=t.replaceAll(WW,((t,i,a,s,r,o)=>i?`[ ]*\\${i}[ ]*`:a?`[ ]*${a}[ ]*`:s?"[ ]+":n?r||o:r?NW.has(r.charCodeAt(0))?r:"":e?(l=!0,`${o}\\p{M}*`):o));const i="[ ]*";return t.endsWith(i)&&(t=t.slice(0,t.length-i.length)),n&&e&&(RW||(RW=String.fromCharCode(...NW)),l=!0,t=`${t}(?=[${RW}]|[^\\p{M}]|$)`),[l,t]},zW=function(t){const e=$i(this,XW,fW);if(0===e.length)return;const n=this._pageContents[t],l=this.match(e,n,t),i=this._pageMatches[t]=[],a=this._pageMatchesLength[t]=[],s=this._pageDiffs[t];null==l||l.forEach((({index:t,length:e})=>{const[n,l]=JW(s,t,e);l&&(i.push(n),a.push(l))})),$i(this,kW).highlightAll&&na(this,XW,OW).call(this,t),this._resumePageIdx===t&&(this._resumePageIdx=null,na(this,XW,PW).call(this));const r=i.length;this._matchesCountTotal+=r,$i(this,YW)?r>0&&na(this,XW,tV).call(this):++la(this,CW)._===this._linkService.pagesCount&&na(this,XW,tV).call(this)},vW=function(){if(this._extractTextPromises.length>0)return;let t=Promise.resolve();const e={disableNormalization:!0};for(let n=0,l=this._linkService.pagesCount;nthis._pdfDocument.getPage(n+1).then((t=>t.getTextContent(e))).then((t=>{const e=[];for(const n of t.items)e.push(n.str),n.hasEOL&&e.push("\n");[this._pageContents[n],this._pageDiffs[n],this._hasDiacritics[n]]=BW(e.join("")),i()}),(t=>{console.error(`Unable to get text content for page ${n+1}`,t),this._pageContents[n]="",this._pageDiffs[n]=null,this._hasDiacritics[n]=!1,i()}))))}},OW=function(t){this._scrollMatches&&this._selected.pageIdx===t&&(this._linkService.page=t+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:t})},_W=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},jW=function(){const t=$i(this,kW).findPrevious,e=this._linkService.page-1,n=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=e,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,ea(this,CW,0),this._matchesCountTotal=0,na(this,XW,_W).call(this);for(let t=0;t{this._pendingFindMatches.delete(t),na(this,XW,zW).call(this,t)})))}if(0===$i(this,XW,fW).length)return void na(this,XW,eV).call(this,UW.FOUND);if(this._resumePageIdx)return;const l=this._offset;if(this._pagesToSearch=n,null!==l.matchIdx){const e=this._pageMatches[l.pageIdx].length;if(!t&&l.matchIdx+10)return l.matchIdx=t?l.matchIdx-1:l.matchIdx+1,void na(this,XW,HW).call(this,!0);na(this,XW,AW).call(this,t)}na(this,XW,PW).call(this)},KW=function(t){const e=this._offset,n=t.length,l=$i(this,kW).findPrevious;return n?(e.matchIdx=l?n-1:0,na(this,XW,HW).call(this,!0),!0):(na(this,XW,AW).call(this,l),!!(e.wrapped&&(e.matchIdx=null,this._pagesToSearch<0))&&(na(this,XW,HW).call(this,!1),!0))},PW=function(){null!==this._resumePageIdx&&console.error("There can only be one pending page.");let t=null;do{const e=this._offset.pageIdx;if(t=this._pageMatches[e],!t){this._resumePageIdx=e;break}}while(!na(this,XW,KW).call(this,t))},AW=function(t){const e=this._offset,n=this._linkService.pagesCount;e.pageIdx=t?e.pageIdx-1:e.pageIdx+1,e.matchIdx=null,this._pagesToSearch--,(e.pageIdx>=n||e.pageIdx<0)&&(e.pageIdx=t?n-1:0,e.wrapped=!0)},HW=function(t=!1){let e=UW.NOT_FOUND;const n=this._offset.wrapped;if(this._offset.wrapped=!1,t){const t=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,e=n?UW.WRAPPED:UW.FOUND,-1!==t&&t!==this._selected.pageIdx&&na(this,XW,OW).call(this,t)}na(this,XW,eV).call(this,e,$i(this,kW).findPrevious),-1!==this._selected.pageIdx&&(this._scrollMatches=!0,na(this,XW,OW).call(this,this._selected.pageIdx))},qW=function(t){const e=this._pdfDocument;this._firstPageCapability.promise.then((()=>{!this._pdfDocument||e&&this._pdfDocument!==e||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),na(this,XW,eV).call(this,UW.FOUND),this._highlightMatches=!1,na(this,XW,_W).call(this))}))},$W=function(){var t;const{pageIdx:e,matchIdx:n}=this._selected;let l=0,i=this._matchesCountTotal;if(-1!==n){for(let n=0;ni)&&(l=i=0),{current:l,total:i}},tV=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:na(this,XW,$W).call(this)})},eV=function(t,e=!1){var n,l;!$i(this,YW)&&($i(this,CW)!==this._linkService.pagesCount||t===UW.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:t,previous:e,entireWord:(null==(n=$i(this,kW))?void 0:n.entireWord)??null,matchesCount:na(this,XW,$W).call(this),rawQuery:(null==(l=$i(this,kW))?void 0:l.query)??null})};const lV="noopener noreferrer nofollow",iV={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var aV,sV;const rV=class t{constructor({eventBus:t,externalLinkTarget:e=null,externalLinkRel:n=null,ignoreDestinationZoom:l=!1}={}){Hi(this,"externalLinkEnabled",!0),this.eventBus=t,this.externalLinkTarget=e,this.externalLinkRel=n,this._ignoreDestinationZoom=l,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(t,e=null){this.baseUrl=e,this.pdfDocument=t}setViewer(t){this.pdfViewer=t}setHistory(t){this.pdfHistory=t}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(t){this.pdfDocument&&(this.pdfViewer.currentPageNumber=t)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(t){this.pdfDocument&&(this.pdfViewer.pagesRotation=t)}get isInPresentationMode(){return!!this.pdfDocument&&this.pdfViewer.isInPresentationMode}async goToDestination(t){if(!this.pdfDocument)return;let e,n,l;if("string"==typeof t?(e=t,n=await this.pdfDocument.getDestination(t)):(e=null,n=await t),!Array.isArray(n))return void console.error(`goToDestination: "${n}" is not a valid destination array, for dest="${t}".`);const[i]=n;if(i&&"object"==typeof i){if(l=this.pdfDocument.cachedPageNumber(i),!l)try{l=await this.pdfDocument.getPageIndex(i)+1}catch{return void console.error(`goToDestination: "${i}" is not a valid page reference, for dest="${t}".`)}}else Number.isInteger(i)&&(l=i+1);!l||l<1||l>this.pagesCount?console.error(`goToDestination: "${l}" is not a valid page number, for dest="${t}".`):(this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:e,explicitDest:n,pageNumber:l})),this.pdfViewer.scrollPageIntoView({pageNumber:l,destArray:n,ignoreDestinationZoom:this._ignoreDestinationZoom}))}goToPage(t){if(!this.pdfDocument)return;const e="string"==typeof t&&this.pdfViewer.pageLabelToPageNumber(t)||0|t;Number.isInteger(e)&&e>0&&e<=this.pagesCount?(this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(e)),this.pdfViewer.scrollPageIntoView({pageNumber:e})):console.error(`PDFLinkService.goToPage: "${t}" is not a valid page.`)}addLinkAttributes(t,e,n=!1){if(!e||"string"!=typeof e)throw new Error('A valid "url" parameter must provided.');const l=n?iV.BLANK:this.externalLinkTarget,i=this.externalLinkRel;this.externalLinkEnabled?t.href=t.title=e:(t.href="",t.title=`Disabled: ${e}`,t.onclick=()=>!1);let a="";switch(l){case iV.NONE:break;case iV.SELF:a="_self";break;case iV.BLANK:a="_blank";break;case iV.PARENT:a="_parent";break;case iV.TOP:a="_top";break}t.target=a,t.rel="string"==typeof i?i:lV}getDestinationHash(t){if("string"==typeof t){if(t.length>0)return this.getAnchorUrl("#"+escape(t))}else if(Array.isArray(t)){const e=JSON.stringify(t);if(e.length>0)return this.getAnchorUrl("#"+escape(e))}return this.getAnchorUrl("")}getAnchorUrl(t){return this.baseUrl?this.baseUrl+t:t}setHash(e){var n;if(!this.pdfDocument)return;let l,i;if(e.includes("=")){const t=JS(e);if(t.has("search")){const e=t.get("search").replaceAll('"',""),n="true"===t.get("phrase");this.eventBus.dispatch("findfromurlhash",{source:this,query:n?e:e.match(/\S+/g)})}if(t.has("page")&&(l=0|t.get("page")||1),t.has("zoom")){const e=t.get("zoom").split(","),n=e[0],l=parseFloat(n);n.includes("Fit")?"Fit"===n||"FitB"===n?i=[null,{name:n}]:"FitH"===n||"FitBH"===n||"FitV"===n||"FitBV"===n?i=[null,{name:n},e.length>1?0|e[1]:null]:"FitR"===n?5!==e.length?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):i=[null,{name:n},0|e[1],0|e[2],0|e[3],0|e[4]]:console.error(`PDFLinkService.setHash: "${n}" is not a valid zoom value.`):i=[null,{name:"XYZ"},e.length>1?0|e[1]:null,e.length>2?0|e[2]:null,l?l/100:n]}return i?this.pdfViewer.scrollPageIntoView({pageNumber:l||this.page,destArray:i,allowNegativeOffset:!0}):l&&(this.page=l),t.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:t.get("pagemode")}),void(t.has("nameddest")&&this.goToDestination(t.get("nameddest")))}i=unescape(e);try{i=JSON.parse(i),Array.isArray(i)||(i=i.toString())}catch{}"string"==typeof i||na(n=t,aV,sV).call(n,i)?this.goToDestination(i):console.error(`PDFLinkService.setHash: "${unescape(e)}" is not a valid destination.`)}executeNamedAction(t){var e,n;if(this.pdfDocument){switch(t){case"GoBack":null==(e=this.pdfHistory)||e.back();break;case"GoForward":null==(n=this.pdfHistory)||n.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:t})}}async executeSetOCGState(t){if(!this.pdfDocument)return;const e=this.pdfDocument,n=await this.pdfViewer.optionalContentConfigPromise;e===this.pdfDocument&&(n.setOCGState(t),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(n))}};aV=new WeakSet,sV=function(t){if(!Array.isArray(t)||t.length<2)return!1;const[e,n,...l]=t;if(("object"!=typeof e||!Number.isInteger(null==e?void 0:e.num)||!Number.isInteger(null==e?void 0:e.gen))&&!Number.isInteger(e)||"object"!=typeof n||"string"!=typeof(null==n?void 0:n.name))return!1;const i=l.length;let a=!0;switch(n.name){case"XYZ":if(i<2||i>3)return!1;break;case"Fit":case"FitB":return 0===i;case"FitH":case"FitBH":case"FitV":case"FitBV":if(i>1)return!1;break;case"FitR":if(4!==i)return!1;a=!1;break;default:return!1}for(const s of l)if(!("number"==typeof s||a&&null===s))return!1;return!0},ta(rV,aV);let oV=rV;class cV extends oV{setDocument(t,e=null){}}const{AbortException:dV,AnnotationEditorLayer:uV,AnnotationEditorParamsType:hV,AnnotationEditorType:mV,AnnotationEditorUIManager:UV,AnnotationLayer:pV,AnnotationMode:FV,build:bV,ColorPicker:ZV,createValidAbsoluteUrl:NV,DOMSVGFactory:RV,DrawLayer:SV,FeatureTest:WV,fetchData:VV,getDocument:QV,getFilenameFromUrl:yV,getPdfFilenameFromUrl:TV,getXfaPageViewport:MV,GlobalWorkerOptions:gV,ImageKind:EV,InvalidPDFException:GV,isDataScheme:BV,isPdfFile:JV,MissingPDFException:kV,noContextMenu:YV,normalizeUnicode:CV,OPS:XV,OutputScale:IV,PasswordResponses:DV,PDFDataRangeTransport:fV,PDFDateString:LV,PDFWorker:wV,PermissionFlag:xV,PixelsPerInch:zV,RenderingCancelledException:vV,setLayerDimensions:OV,shadow:_V,stopEvent:jV,TextLayer:KV,TouchManager:PV,UnexpectedResponseException:AV,Util:HV,VerbosityLevel:qV,version:$V,XfaLayer:tQ}=globalThis.pdfjsLib;var eQ,nQ,lQ,iQ,aQ;class sQ{constructor({pdfPage:t,linkService:e,downloadManager:n,annotationStorage:l=null,imageResourcesPath:i="",renderForms:a=!0,enableScripting:s=!1,hasJSActionsPromise:r=null,fieldObjectsPromise:o=null,annotationCanvasMap:c=null,accessibilityManager:d=null,annotationEditorUIManager:u=null,onAppend:h=null}){ta(this,lQ),ta(this,eQ,null),ta(this,nQ,null),this.pdfPage=t,this.linkService=e,this.downloadManager=n,this.imageResourcesPath=i,this.renderForms=a,this.annotationStorage=l,this.enableScripting=s,this._hasJSActionsPromise=r||Promise.resolve(!1),this._fieldObjectsPromise=o||Promise.resolve(null),this._annotationCanvasMap=c,this._accessibilityManager=d,this._annotationEditorUIManager=u,ea(this,eQ,h),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=e.eventBus}async render(t,e,n="display"){var l,i;if(this.div){if(this._cancelled||!this.annotationLayer)return;return void this.annotationLayer.update({viewport:t.clone({dontFlip:!0})})}const[a,s,r]=await Promise.all([this.pdfPage.getAnnotations({intent:n}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const o=this.div=document.createElement("div");o.className="annotationLayer",null==(l=$i(this,eQ))||l.call(this,o),0!==a.length?(this.annotationLayer=new pV({div:o,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:t.clone({dontFlip:!0}),structTreeLayer:(null==e?void 0:e.structTreeLayer)||null}),await this.annotationLayer.render({annotations:a,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:s,fieldObjects:r}),this.linkService.isInPresentationMode&&na(this,lQ,iQ).call(this,TS.FULLSCREEN),$i(this,nQ)||(ea(this,nQ,new AbortController),null==(i=this._eventBus)||i._on("presentationmodechanged",(t=>{na(this,lQ,iQ).call(this,t.state)}),{signal:$i(this,nQ).signal}))):this.hide()}cancel(){var t;this._cancelled=!0,null==(t=$i(this,nQ))||t.abort(),ea(this,nQ,null)}hide(){this.div&&(this.div.hidden=!0)}hasEditableAnnotations(){var t;return!(null==(t=this.annotationLayer)||!t.hasEditableAnnotations())}}function rQ(t,e){const n=document.createElement("a");if(!n.click)throw new Error('DownloadManager: "a.click()" is not supported.');n.href=t,n.target="_parent","download"in n&&(n.download=e),(document.body||document.documentElement).append(n),n.click(),n.remove()}eQ=new WeakMap,nQ=new WeakMap,lQ=new WeakSet,iQ=function(t){if(!this.div)return;let e=!1;switch(t){case TS.FULLSCREEN:e=!0;break;case TS.NORMAL:break;default:return}for(const n of this.div.childNodes)n.hasAttribute("data-internal-link")||(n.inert=e)};class oQ{constructor(){ta(this,aQ,new WeakMap)}downloadData(t,e,n){const l=URL.createObjectURL(new Blob([t],{type:n}));rQ(l,e)}openOrDownloadData(t,e,n=null){const l=JV(e)?"application/pdf":"";return this.downloadData(t,e,l),!1}download(t,e,n){let l;if(t)l=URL.createObjectURL(new Blob([t],{type:"application/pdf"}));else{if(!NV(e,"http://example.com"))return void console.error(`download - not a valid URL: ${e}`);l=e+"#pdfjs.action=download"}rQ(l,n)}}aQ=new WeakMap;const cQ={EVENT:"event",TIMEOUT:"timeout"};async function dQ({target:t,name:e,delay:n=0}){if("object"!=typeof t||!e||"string"!=typeof e||!(Number.isInteger(n)&&n>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:l,resolve:i}=Promise.withResolvers(),a=new AbortController;function s(t){a.abort(),clearTimeout(o),i(t)}const r=t instanceof hQ?"_on":"addEventListener";t[r](e,s.bind(null,cQ.EVENT),{signal:a.signal});const o=setTimeout(s.bind(null,cQ.TIMEOUT),n);return l}var uQ;class hQ{constructor(){ta(this,uQ,Object.create(null))}on(t,e,n=null){this._on(t,e,{external:!0,once:null==n?void 0:n.once,signal:null==n?void 0:n.signal})}off(t,e,n=null){this._off(t,e)}dispatch(t,e){const n=$i(this,uQ)[t];if(!n||0===n.length)return;let l;for(const{listener:i,external:a,once:s}of n.slice(0))s&&this._off(t,i),a?(l||(l=[])).push(i):i(e);if(l){for(const t of l)t(e);l=null}}_on(t,e,n=null){var l;let i=null;if((null==n?void 0:n.signal)instanceof AbortSignal){const{signal:l}=n;if(l.aborted)return void console.error("Cannot use an `aborted` signal.");const a=()=>this._off(t,e);i=()=>l.removeEventListener("abort",a),l.addEventListener("abort",a)}((l=$i(this,uQ))[t]||(l[t]=[])).push({listener:e,external:!0===(null==n?void 0:n.external),once:!0===(null==n?void 0:n.once),rmAbort:i})}_off(t,e,n=null){var l;const i=$i(this,uQ)[t];if(i)for(let a=0,s=i.length;a1;for(const i of e)if("string"!=typeof i){if(t.placeables++,t.placeables>bQ)throw t.dirty.delete(e),new RangeError(`Too many placeables expanded: ${t.placeables}, max allowed is ${bQ}`);l&&n.push(ZQ),n.push(VQ(t,i).toString(t)),l&&n.push(NQ)}else n.push(t.bundle._transform(i));return t.dirty.delete(e),n.join("")}function GQ(t,e){return"string"==typeof e?t.bundle._transform(e):EQ(t,e)}class BQ{constructor(t,e,n){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=t,this.errors=e,this.args=n}reportError(t){if(!this.errors||!(t instanceof Error))throw t;this.errors.push(t)}memoizeIntlObject(t,e){let n=this.bundle._intls.get(t);n||(n={},this.bundle._intls.set(t,n));let l=JSON.stringify(e);return n[l]||(n[l]=new t(this.bundle.locales,e)),n[l]}}function JQ(t,e){const n=Object.create(null);for(const[l,i]of Object.entries(t))e.includes(l)&&(n[l]=i.valueOf());return n}const kQ=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function YQ(t,e){let n=t[0];if(n instanceof UQ)return new UQ(`NUMBER(${n.valueOf()})`);if(n instanceof pQ)return new pQ(n.valueOf(),{...n.opts,...JQ(e,kQ)});if(n instanceof FQ)return new pQ(n.valueOf(),{...JQ(e,kQ)});throw new TypeError("Invalid argument to NUMBER")}const CQ=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function XQ(t,e){let n=t[0];if(n instanceof UQ)return new UQ(`DATETIME(${n.valueOf()})`);if(n instanceof FQ)return new FQ(n.valueOf(),{...n.opts,...JQ(e,CQ)});if(n instanceof pQ)return new FQ(n.valueOf(),{...JQ(e,CQ)});throw new TypeError("Invalid argument to DATETIME")}const IQ=new Map;function DQ(t){const e=Array.isArray(t)?t.join(" "):t;let n=IQ.get(e);return void 0===n&&(n=new Map,IQ.set(e,n)),n}class fQ{constructor(t,{functions:e,useIsolating:n=!0,transform:l=t=>t}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(t)?t:[t],this._functions={NUMBER:YQ,DATETIME:XQ,...e},this._useIsolating=n,this._transform=l,this._intls=DQ(t)}hasMessage(t){return this._messages.has(t)}getMessage(t){return this._messages.get(t)}addResource(t,{allowOverrides:e=!1}={}){const n=[];for(let l=0;l\s*/y,ry=/\s*:\s*/y,oy=/\s*,?\s*/y,cy=/\s+/y;class dy{constructor(t){this.body=[],LQ.lastIndex=0;let e=0;for(;;){let n=LQ.exec(t);if(null===n)break;e=LQ.lastIndex;try{this.body.push(r(n[1]))}catch(Q){if(Q instanceof SyntaxError)continue;throw Q}}function n(n){return n.lastIndex=e,n.test(t)}function l(n,l){if(t[e]===n)return e++,!0;if(l)throw new l(`Expected ${n}`);return!1}function i(t,l){if(n(t))return e=t.lastIndex,!0;if(l)throw new l(`Expected ${t.toString()}`);return!1}function a(n){n.lastIndex=e;let l=n.exec(t);if(null===l)throw new SyntaxError(`Expected ${n.toString()}`);return e=n.lastIndex,l}function s(t){return a(t)[1]}function r(t){let e=c(),n=o();if(null===e&&0===Object.keys(n).length)throw new SyntaxError("Expected message value or attributes");return{id:t,value:e,attributes:n}}function o(){let t=Object.create(null);for(;n(wQ);){let e=s(wQ),n=c();if(null===n)throw new SyntaxError("Expected attribute value");t[e]=n}return t}function c(){let l;if(n(jQ)&&(l=s(jQ)),"{"===t[e]||"}"===t[e])return d(l?[l]:[],1/0);let i=S();return i?l?d([l,i],i.length):(i.value=W(i.value,HQ),d([i],i.length)):l?W(l,qQ):null}function d(l=[],i){for(;;){if(n(jQ)){l.push(s(jQ));continue}if("{"===t[e]){l.push(u());continue}if("}"===t[e])throw new SyntaxError("Unbalanced closing brace");let a=S();if(!a)break;l.push(a),i=Math.min(i,a.length)}let a=l.length-1,r=l[a];"string"==typeof r&&(l[a]=W(r,qQ));let o=[];for(let t of l)t instanceof uy&&(t=t.value.slice(0,t.value.length-i)),t&&o.push(t);return o}function u(){i(ey,SyntaxError);let t=h();if(i(ny))return t;if(i(sy)){let e=p();return i(ny,SyntaxError),{type:"select",selector:t,...e}}throw new SyntaxError("Unclosed placeable")}function h(){if("{"===t[e])return u();if(n(OQ)){let[,t,e,n=null]=a(OQ);if("$"===t)return{type:"var",name:e};if(i(ay)){let l=m();if("-"===t)return{type:"term",name:e,attr:n,args:l};if(_Q.test(e))return{type:"func",name:e,args:l};throw new SyntaxError("Function names must be all upper-case")}return"-"===t?{type:"term",name:e,attr:n,args:[]}:{type:"mesg",name:e,attr:n}}return b()}function m(){let n=[];for(;;){switch(t[e]){case")":return e++,n;case void 0:throw new SyntaxError("Unclosed argument list")}n.push(U()),i(oy)}}function U(){let t=h();return"mesg"!==t.type?t:i(ry)?{type:"narg",name:t.name,value:b()}:t}function p(){let t,e=[],i=0;for(;n(xQ);){l("*")&&(t=i);let n=F(),a=c();if(null===a)throw new SyntaxError("Expected variant value");e[i++]={key:n,value:a}}if(0===i)return null;if(void 0===t)throw new SyntaxError("Expected default variant");return{variants:e,star:t}}function F(){let t;return i(ly,SyntaxError),t=n(zQ)?Z():{type:"str",value:s(vQ)},i(iy,SyntaxError),t}function b(){if(n(zQ))return Z();if('"'===t[e])return N();throw new SyntaxError("Invalid expression")}function Z(){let[,t,e=""]=a(zQ),n=e.length;return{type:"num",value:parseFloat(t),precision:n}}function N(){l('"',SyntaxError);let n="";for(;;){if(n+=s(KQ),"\\"!==t[e]){if(l('"'))return{type:"str",value:n};throw new SyntaxError("Unclosed string literal")}n+=R()}}function R(){if(n(PQ))return s(PQ);if(n(AQ)){let[,t,e]=a(AQ),n=parseInt(t||e,16);return n<=55295||57344<=n?String.fromCodePoint(n):"�"}throw new SyntaxError("Unknown escape sequence")}function S(){let n=e;switch(i(cy),t[e]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return V(t.slice(n,e))}return" "===t[e-1]&&V(t.slice(n,e))}function W(t,e){return t.replace(e,"")}function V(t){let e=t.replace($Q,"\n"),n=ty.exec(t)[1].length;return new uy(e,n)}}}class uy{constructor(t,e){this.value=t,this.length=e}}const hy=/<|&#?\w+;/,my={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},Uy={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function py(t,e){const{value:n}=e;if("string"==typeof n)if("title"===t.localName&&"http://www.w3.org/1999/xhtml"===t.namespaceURI)t.textContent=n;else if(hy.test(n)){const e=t.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");e.innerHTML=n,Fy(e.content,t)}else t.textContent=n;Zy(e,t)}function Fy(t,e){for(const n of t.childNodes)if(n.nodeType!==n.TEXT_NODE){if(n.hasAttribute("data-l10n-name")){const l=Ny(e,n);t.replaceChild(l,n);continue}if(Wy(n)){const e=Ry(n);t.replaceChild(e,n);continue}console.warn(`An element of forbidden type "${n.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),t.replaceChild(Sy(n),n)}e.textContent="",e.appendChild(t)}function by(t,e){if(!t)return!1;for(let n of t)if(n.name===e)return!0;return!1}function Zy(t,e){const n=e.hasAttribute("data-l10n-attrs")?e.getAttribute("data-l10n-attrs").split(",").map((t=>t.trim())):null;for(const l of Array.from(e.attributes))Vy(l.name,e,n)&&!by(t.attributes,l.name)&&e.removeAttribute(l.name);if(t.attributes)for(const l of Array.from(t.attributes))Vy(l.name,e,n)&&e.getAttribute(l.name)!==l.value&&e.setAttribute(l.name,l.value)}function Ny(t,e){const n=e.getAttribute("data-l10n-name"),l=t.querySelector(`[data-l10n-name="${n}"]`);if(!l)return console.warn(`An element named "${n}" wasn't found in the source.`),Sy(e);if(l.localName!==e.localName)return console.warn(`An element named "${n}" was found in the translation but its type ${e.localName} didn't match the element found in the source (${l.localName}).`),Sy(e);t.removeChild(l);const i=l.cloneNode(!1);return Qy(e,i)}function Ry(t){const e=t.ownerDocument.createElement(t.localName);return Qy(t,e)}function Sy(t){return t.ownerDocument.createTextNode(t.textContent)}function Wy(t){const e=my[t.namespaceURI];return e&&e.includes(t.localName)}function Vy(t,e,n=null){if(n&&n.includes(t))return!0;const l=Uy[e.namespaceURI];if(!l)return!1;const i=t.toLowerCase(),a=e.localName;if(l.global.includes(i))return!0;if(!l[a])return!1;if(l[a].includes(i))return!0;if("http://www.w3.org/1999/xhtml"===e.namespaceURI&&"input"===a&&"value"===i){const t=e.type.toLowerCase();if("submit"===t||"button"===t||"reset"===t)return!0}return!1}function Qy(t,e){return e.textContent=t.textContent,Zy(t,e),e}class yy extends Array{static from(t){return t instanceof this?t:new this(t)}}class Ty extends yy{constructor(t){if(super(),Symbol.asyncIterator in Object(t))this.iterator=t[Symbol.asyncIterator]();else{if(!(Symbol.iterator in Object(t)))throw new TypeError("Argument must implement the iteration protocol.");this.iterator=t[Symbol.iterator]()}}[Symbol.asyncIterator](){const t=this;let e=0;return{async next(){return t.length<=e&&t.push(t.iterator.next()),t[e++]}}}async touchNext(t=1){let e=0;for(;e++!t.includes(e))),this.onChange(),this.resourceIds.length}async formatWithFallback(t,e){const n=[];let l=!1;for await(const i of this.bundles){l=!0;const a=Gy(e,i,t,n);if(0===a.size)break;if(typeof console<"u"){const t=i.locales[0],e=Array.from(a).join(", ");console.warn(`[fluent] Missing translations in ${t}: ${e}`)}}return!l&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.\n keys: ${JSON.stringify(t)}.\n resourceIds: ${JSON.stringify(this.resourceIds)}.`),n}formatMessages(t){return this.formatWithFallback(t,Ey)}formatValues(t){return this.formatWithFallback(t,gy)}async formatValue(t,e){const[n]=await this.formatValues([{id:t,args:e}]);return n}handleEvent(){this.onChange()}onChange(t=!1){this.bundles=Ty.from(this.generateBundles(this.resourceIds)),t&&this.bundles.touchNext(2)}}function gy(t,e,n,l){return n.value?t.formatPattern(n.value,l,e):null}function Ey(t,e,n,l){const i={value:null,attributes:null};n.value&&(i.value=t.formatPattern(n.value,l,e));let a=Object.keys(n.attributes);if(a.length>0){i.attributes=new Array(a.length);for(let[s,r]of a.entries()){let a=t.formatPattern(n.attributes[r],l,e);i.attributes[s]={name:r,value:a}}}return i}function Gy(t,e,n,l){const i=[],a=new Set;return n.forEach((({id:n,args:s},r)=>{if(void 0!==l[r])return;let o=e.getMessage(n);if(o){if(i.length=0,l[r]=t(e,i,o,s),i.length>0&&typeof console<"u"){const t=e.locales[0],l=i.join(", ");console.warn(`[fluent][resolver] errors in ${t}/${n}: ${l}.`)}}else a.add(n)})),a}const By="data-l10n-id",Jy="data-l10n-args",ky=`[${By}]`;class Yy extends My{constructor(t,e){super(t,e),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[By,Jy]}}onChange(t=!1){super.onChange(t),this.roots&&this.translateRoots()}setAttributes(t,e,n){return t.setAttribute(By,e),n?t.setAttribute(Jy,JSON.stringify(n)):t.removeAttribute(Jy),t}getAttributes(t){return{id:t.getAttribute(By),args:JSON.parse(t.getAttribute(Jy)||null)}}connectRoot(t){for(const e of this.roots)if(e===t||e.contains(t)||t.contains(e))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==t.ownerDocument.defaultView)throw new Error("Cannot connect a root:\n DOMLocalization already has a root from a different window.")}else this.windowElement=t.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver((t=>this.translateMutations(t)));this.roots.add(t),this.mutationObserver.observe(t,this.observerConfig)}disconnectRoot(t){return this.roots.delete(t),this.pauseObserving(),0===this.roots.size?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const t=Array.from(this.roots);return Promise.all(t.map((t=>this.translateFragment(t))))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const t of this.roots)this.mutationObserver.observe(t,this.observerConfig)}translateMutations(t){for(const e of t)switch(e.type){case"attributes":e.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(e.target);break;case"childList":for(const t of e.addedNodes)if(t.nodeType===t.ELEMENT_NODE)if(t.childElementCount)for(const e of this.getTranslatables(t))this.pendingElements.add(e);else t.hasAttribute(By)&&this.pendingElements.add(t);break}this.pendingElements.size>0&&null===this.pendingrAF&&(this.pendingrAF=this.windowElement.requestAnimationFrame((()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null})))}translateFragment(t){return this.translateElements(this.getTranslatables(t))}async translateElements(t){if(!t.length)return;const e=t.map(this.getKeysForElement),n=await this.formatMessages(e);return this.applyTranslations(t,n)}applyTranslations(t,e){this.pauseObserving();for(let n=0;n({id:t}))),(await $i(this,Dy).formatMessages(t)).map((t=>t.value))):(null==(l=(await $i(this,Dy).formatMessages([{id:t,args:e}]))[0])?void 0:l.value)||n}async translate(t){($i(this,Xy)||ea(this,Xy,new Set)).add(t);try{$i(this,Dy).connectRoot(t),await $i(this,Dy).translateRoots()}catch{}}async translateOnce(t){try{await $i(this,Dy).translateElements([t])}catch(TB){console.error("translateOnce:",TB)}}async destroy(){if($i(this,Xy)){for(const t of $i(this,Xy))$i(this,Dy).disconnectRoot(t);$i(this,Xy).clear(),ea(this,Xy,null)}$i(this,Dy).pauseObserving()}pause(){$i(this,Dy).pauseObserving()}resume(){$i(this,Dy).resumeObserving()}};Cy=new WeakMap,Xy=new WeakMap,Iy=new WeakMap,Dy=new WeakMap,fy=new WeakSet,Ly=function(t){return t=(null==t?void 0:t.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[t]||t},wy=function(t){const e=t.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(e)},ta(xy,fy);let zy=xy;function vy(t,e){const n=new dy(e),l=new fQ(t),i=l.addResource(n);return i.length&&console.error("L10n errors",i),l}var Oy,_y,jy,Ky,Py,Ay;const Hy=class t extends zy{constructor(e){super({lang:e});const n=e?na(t,Oy,_y).bind(t,"en-us",this.getLanguage()):na(t,Oy,Py).bind(t,this.getLanguage());this._setL10n(new Yy([],n))}};Oy=new WeakSet,_y=async function*(t,e){const{baseURL:n,paths:l}=await na(this,Oy,Ky).call(this),i=[e];if(t!==e){const n=e.split("-",1)[0];n!==e&&i.push(n),i.push(t)}for(const a of i){const t=await na(this,Oy,jy).call(this,a,n,l);t?yield t:"en-us"===a&&(yield na(this,Oy,Ay).call(this,a))}},jy=async function(t,e,n){const l=n[t];if(!l)return null;const i=new URL(l,e),a=await VV(i,"text");return vy(t,a)},Ky=async function(){try{const{href:t}=document.querySelector('link[type="application/l10n"]'),e=await VV(t,"json");return{baseURL:t.replace(/[^/]*$/,"")||"./",paths:e}}catch{}return{baseURL:"./",paths:Object.create(null)}},Py=async function*(t){yield na(this,Oy,Ay).call(this,t)},Ay=async function(t){return vy(t,'pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties…\npdfjs-document-properties-button-label = Document Properties…\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing…\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-toggle-sidebar-button =\n .title = Toggle Sidebar\npdfjs-toggle-sidebar-notification-button =\n .title = Toggle Sidebar (document contains outline/attachments/layers)\npdfjs-toggle-sidebar-button-label = Toggle Sidebar\npdfjs-document-outline-button =\n .title = Show Document Outline (double-click to expand/collapse all items)\npdfjs-document-outline-button-label = Document Outline\npdfjs-attachments-button =\n .title = Show Attachments\npdfjs-attachments-button-label = Attachments\npdfjs-layers-button =\n .title = Show Layers (double-click to reset all layers to the default state)\npdfjs-layers-button-label = Layers\npdfjs-thumbs-button =\n .title = Show Thumbnails\npdfjs-thumbs-button-label = Thumbnails\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document…\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing…\npdfjs-ink =\n .aria-label = Draw Editor\npdfjs-ink-canvas =\n .aria-label = User-created image\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, “A young man sits down at a table to eat a meal”\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner — resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle — resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner — resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right — resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner — resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle — resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner — resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left — resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here…\npdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading…\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close')},ta(Hy,Oy);let qy=Hy;const $y=1e3,tT=50,eT=1e3;function nT(){return document.location.hash}var lT,iT,aT,sT,rT,oT,cT,dT,uT,hT,mT,UT,pT,FT,bT,ZT,NT,RT,ST;class WT{constructor({linkService:t,eventBus:e}){ta(this,iT),ta(this,lT,null),this.linkService=t,this.eventBus=e,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",(()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",(t=>{this._isPagesLoaded=!!t.pagesCount}),{once:!0})}))}initialize({fingerprint:t,resetHistory:e=!1,updateUrl:n=!1}){if(!t||"string"!=typeof t)return void console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');this._initialized&&this.reset();const l=""!==this._fingerprint&&this._fingerprint!==t;this._fingerprint=t,this._updateUrl=!0===n,this._initialized=!0,na(this,iT,UT).call(this);const i=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=nT(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!na(this,iT,oT).call(this,i,!0)||e){const{hash:t,page:n,rotation:i}=na(this,iT,dT).call(this,!0);return!t||l||e?void na(this,iT,aT).call(this,null,!0):void na(this,iT,aT).call(this,{hash:t,page:n,rotation:i},!0)}const a=i.destination;na(this,iT,cT).call(this,a,i.uid,!0),void 0!==a.rotation&&(this._initialRotation=a.rotation),a.dest?(this._initialBookmark=JSON.stringify(a.dest),this._destination.page=null):a.hash?this._initialBookmark=a.hash:a.page&&(this._initialBookmark=`page=${a.page}`)}reset(){this._initialized&&(na(this,iT,mT).call(this),this._initialized=!1,na(this,iT,pT).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:t=null,explicitDest:e,pageNumber:n}){if(!this._initialized)return;if(t&&"string"!=typeof t)return void console.error(`PDFHistory.push: "${t}" is not a valid namedDest parameter.`);if(!Array.isArray(e))return void console.error(`PDFHistory.push: "${e}" is not a valid explicitDest parameter.`);if(!na(this,iT,rT).call(this,n)&&(null!==n||this._destination))return void console.error(`PDFHistory.push: "${n}" is not a valid pageNumber parameter.`);const l=t||JSON.stringify(e);if(!l)return;let i=!1;if(this._destination&&(VT(this._destination.hash,l)||QT(this._destination.dest,e))){if(this._destination.page)return;i=!0}this._popStateInProgress&&!i||(na(this,iT,aT).call(this,{dest:e,hash:l,page:n,rotation:this.linkService.rotation},i),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then((()=>{this._popStateInProgress=!1}))))}pushPage(t){var e;if(this._initialized){if(!na(this,iT,rT).call(this,t))return void console.error(`PDFHistory.pushPage: "${t}" is not a valid page number.`);(null==(e=this._destination)?void 0:e.page)!==t&&(this._popStateInProgress||(na(this,iT,aT).call(this,{dest:null,hash:`page=${t}`,page:t,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then((()=>{this._popStateInProgress=!1})))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||na(this,iT,sT).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;na(this,iT,oT).call(this,t)&&t.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;na(this,iT,oT).call(this,t)&&t.uid0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}function VT(t,e){return"string"==typeof t&&"string"==typeof e&&(t===e||JS(t).get("nameddest")===e)}function QT(t,e){function n(t,e){if(typeof t!=typeof e||Array.isArray(t)||Array.isArray(e))return!1;if(null!==t&&"object"==typeof t&&null!==e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const l in t)if(!n(t[l],e[l]))return!1;return!0}return t===e||Number.isNaN(t)&&Number.isNaN(e)}if(!Array.isArray(t)||!Array.isArray(e)||t.length!==e.length)return!1;for(let l=0,i=t.length;l=e.first&&this._destination.page<=e.page){if(void 0!==this._destination.dest||!this._destination.first)return;n=!0}na(this,iT,aT).call(this,e,n)},rT=function(t){return Number.isInteger(t)&&t>0&&t<=this.linkService.pagesCount},oT=function(t,e=!1){if(!t)return!1;if(t.fingerprint!==this._fingerprint){if(!e)return!1;{if("string"!=typeof t.fingerprint||t.fingerprint.length!==this._fingerprint.length)return!1;const[e]=performance.getEntriesByType("navigation");if("reload"!==(null==e?void 0:e.type))return!1}}return!(!Number.isInteger(t.uid)||t.uid<0||null===t.destination||"object"!=typeof t.destination)},cT=function(t,e,n=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),n&&null!=t&&t.temporary&&delete t.temporary,this._destination=t,this._uid=e,this._maxUid=Math.max(this._maxUid,e),this._numPositionUpdates=0},dT=function(t=!1){const e=unescape(nT()).substring(1),n=JS(e),l=n.get("nameddest")||"";let i=0|n.get("page");return(!na(this,iT,rT).call(this,i)||t&&l.length>0)&&(i=null),{hash:e,page:i,rotation:this.linkService.rotation}},uT=function({location:t}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:t.pdfOpenParams.substring(1),page:this.linkService.page,first:t.pageNumber,rotation:t.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout((()=>{this._popStateInProgress||na(this,iT,sT).call(this,!0),this._updateViewareaTimeout=null}),eT))},hT=function({state:t}){const e=nT(),n=this._currentHash!==e;if(this._currentHash=e,!t){this._uid++;const{hash:t,page:e,rotation:n}=na(this,iT,dT).call(this);return void na(this,iT,aT).call(this,{hash:t,page:e,rotation:n},!0)}if(!na(this,iT,oT).call(this,t))return;this._popStateInProgress=!0,n&&(this._blockHashChange++,dQ({target:window,name:"hashchange",delay:$y}).then((()=>{this._blockHashChange--})));const l=t.destination;na(this,iT,cT).call(this,l,t.uid,!0),LS(l.rotation)&&(this.linkService.rotation=l.rotation),l.dest?this.linkService.goToDestination(l.dest):l.hash?this.linkService.setHash(l.hash):l.page&&(this.linkService.page=l.page),Promise.resolve().then((()=>{this._popStateInProgress=!1}))},mT=function(){(!this._destination||this._destination.temporary)&&na(this,iT,sT).call(this)},UT=function(){if($i(this,lT))return;ea(this,lT,new AbortController);const{signal:t}=$i(this,lT);this.eventBus._on("updateviewarea",na(this,iT,uT).bind(this),{signal:t}),window.addEventListener("popstate",na(this,iT,hT).bind(this),{signal:t}),window.addEventListener("pagehide",na(this,iT,mT).bind(this),{signal:t})},pT=function(){var t;null==(t=$i(this,lT))||t.abort(),ea(this,lT,null)};class yT{constructor(t){ta(this,FT,null),ta(this,bT,null),ta(this,ZT,null),ta(this,NT,null),ta(this,RT,null),ta(this,ST),this.pdfPage=t.pdfPage,this.accessibilityManager=t.accessibilityManager,this.l10n=t.l10n,this.l10n||(this.l10n=new qy),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,ea(this,ST,t.uiManager),ea(this,FT,t.annotationLayer||null),ea(this,RT,t.textLayer||null),ea(this,bT,t.drawLayer||null),ea(this,ZT,t.onAppend||null),ea(this,NT,t.structTreeLayer||null)}async render(t,e="display"){var n;if("display"!==e||this._cancelled)return;const l=t.clone({dontFlip:!0});if(this.div)return this.annotationEditorLayer.update({viewport:l}),void this.show();const i=this.div=document.createElement("div");i.className="annotationEditorLayer",i.hidden=!0,i.dir=$i(this,ST).direction,null==(n=$i(this,ZT))||n.call(this,i),this.annotationEditorLayer=new uV({uiManager:$i(this,ST),div:i,structTreeLayer:$i(this,NT),accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:l,annotationLayer:$i(this,FT),textLayer:$i(this,RT),drawLayer:$i(this,bT)});const a={viewport:l,div:i,annotations:null,intent:e};this.annotationEditorLayer.render(a),this.show()}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.annotationEditorLayer.pause(!0),this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1,this.annotationEditorLayer.pause(!1))}}FT=new WeakMap,bT=new WeakMap,ZT=new WeakMap,NT=new WeakMap,RT=new WeakMap,ST=new WeakMap;{var TT=new Map;const t=navigator.userAgent||"",e=navigator.platform||"",n=navigator.maxTouchPoints||1,l=/Android/.test(t),i=/\b(iPad|iPhone|iPod)(?=;)/.test(t)||"MacIntel"===e&&n>1;(function(){(i||l)&&TT.set("maxCanvasPixels",5242880)})(),function(){l&&TT.set("useSystemFonts",!1)}()}const MT={BROWSER:1,VIEWER:2,API:4,WORKER:8,EVENT_DISPATCH:16,PREFERENCE:128},gT={BOOLEAN:1,NUMBER:2,OBJECT:4,STRING:8,UNDEFINED:16},ET={allowedGlobalEvents:{value:null,kind:MT.BROWSER},canvasMaxAreaInBytes:{value:-1,kind:MT.BROWSER+MT.API},isInAutomation:{value:!1,kind:MT.BROWSER},localeProperties:{value:{lang:navigator.language||"en-US"},kind:MT.BROWSER},nimbusDataStr:{value:"",kind:MT.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:MT.BROWSER},supportsDocumentFonts:{value:!0,kind:MT.BROWSER},supportsIntegratedFind:{value:!1,kind:MT.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:MT.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:MT.BROWSER},supportsPinchToZoom:{value:!0,kind:MT.BROWSER},toolbarDensity:{value:0,kind:MT.BROWSER+MT.EVENT_DISPATCH},altTextLearnMoreUrl:{value:"",kind:MT.VIEWER+MT.PREFERENCE},annotationEditorMode:{value:0,kind:MT.VIEWER+MT.PREFERENCE},annotationMode:{value:2,kind:MT.VIEWER+MT.PREFERENCE},cursorToolOnLoad:{value:0,kind:MT.VIEWER+MT.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:MT.VIEWER},defaultZoomDelay:{value:400,kind:MT.VIEWER+MT.PREFERENCE},defaultZoomValue:{value:"",kind:MT.VIEWER+MT.PREFERENCE},disableHistory:{value:!1,kind:MT.VIEWER},disablePageLabels:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableAltText:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableAltTextModelDownload:{value:!0,kind:MT.VIEWER+MT.PREFERENCE+MT.EVENT_DISPATCH},enableGuessAltText:{value:!0,kind:MT.VIEWER+MT.PREFERENCE+MT.EVENT_DISPATCH},enableHighlightFloatingButton:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enableNewAltTextWhenAddingImage:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enablePermissions:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enableScripting:{value:!0,kind:MT.VIEWER+MT.PREFERENCE},enableUpdatedAddImage:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:MT.VIEWER},externalLinkTarget:{value:0,kind:MT.VIEWER+MT.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:MT.VIEWER+MT.PREFERENCE},historyUpdateUrl:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},imageResourcesPath:{value:"./images/",kind:MT.VIEWER},maxCanvasPixels:{value:2**25,kind:MT.VIEWER},forcePageColors:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:MT.VIEWER+MT.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:MT.VIEWER+MT.PREFERENCE},pdfBugEnabled:{value:!1,kind:MT.VIEWER+MT.PREFERENCE},printResolution:{value:150,kind:MT.VIEWER},sidebarViewOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},scrollModeOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},spreadModeOnLoad:{value:-1,kind:MT.VIEWER+MT.PREFERENCE},textLayerMode:{value:1,kind:MT.VIEWER+MT.PREFERENCE},viewOnLoad:{value:0,kind:MT.VIEWER+MT.PREFERENCE},cMapPacked:{value:!0,kind:MT.API},cMapUrl:{value:"../web/cmaps/",kind:MT.API},disableAutoFetch:{value:!1,kind:MT.API+MT.PREFERENCE},disableFontFace:{value:!1,kind:MT.API+MT.PREFERENCE},disableRange:{value:!1,kind:MT.API+MT.PREFERENCE},disableStream:{value:!1,kind:MT.API+MT.PREFERENCE},docBaseUrl:{value:"",kind:MT.API},enableHWA:{value:!0,kind:MT.API+MT.VIEWER+MT.PREFERENCE},enableXfa:{value:!0,kind:MT.API+MT.PREFERENCE},fontExtraProperties:{value:!1,kind:MT.API},isEvalSupported:{value:!0,kind:MT.API},isOffscreenCanvasSupported:{value:!0,kind:MT.API},maxImageSize:{value:-1,kind:MT.API},pdfBug:{value:!1,kind:MT.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:MT.API},useSystemFonts:{value:void 0,kind:MT.API,type:gT.BOOLEAN+gT.UNDEFINED},verbosity:{value:1,kind:MT.API},workerPort:{value:null,kind:MT.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:MT.WORKER}};var GT;ET.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:MT.VIEWER},ET.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:MT.VIEWER},ET.viewerCssTheme={value:0,kind:MT.VIEWER+MT.PREFERENCE},ET.enableFakeMLManager={value:!0,kind:MT.VIEWER},ET.disablePreferences={value:!1,kind:MT.VIEWER};const BT=class{static get(t){return $i(this,GT).get(t)}static getAll(t=null,e=!1){const n=Object.create(null);for(const l in ET){const i=ET[l];t&&!(t&i.kind)||(n[l]=e?i.value:$i(this,GT).get(l))}return n}static set(t,e){this.setAll({[t]:e})}static setAll(t,e=!1){let n;this._hasInvokedSet||(this._hasInvokedSet=!0);for(const l in t){const i=ET[l],a=t[l];if(!i||!(typeof a==typeof i.value||gT[(typeof a).toUpperCase()]&i.type))continue;const{kind:s}=i;e&&!(s&MT.BROWSER||s&MT.PREFERENCE)||(this.eventBus&&s&MT.EVENT_DISPATCH&&(n||(n=new Map)).set(l,a),$i(this,GT).set(l,a))}if(n)for(const[l,i]of n)this.eventBus.dispatch(l.toLowerCase(),{source:this,value:i})}};GT=new WeakMap,Hi(BT,"eventBus"),ta(BT,GT,new Map),(()=>{for(const t in ET)$i(BT,GT).set(t,ET[t].value);for(const[t,e]of TT)$i(BT,GT).set(t,e);BT._hasInvokedSet=!1,BT._checkDisablePreferences=()=>!!BT.get("disablePreferences")||(BT._hasInvokedSet&&console.warn('The Preferences may override manually set AppOptions; please use the "disablePreferences"-option to prevent that.'),!1)})();let JT=BT;var kT;class YT{constructor(t){ta(this,kT,null),this.pageIndex=t.pageIndex}async render(t="display"){"display"!==t||$i(this,kT)||this._cancelled||ea(this,kT,new SV({pageIndex:this.pageIndex}))}cancel(){this._cancelled=!0,$i(this,kT)&&($i(this,kT).destroy(),ea(this,kT,null))}setParent(t){var e;null==(e=$i(this,kT))||e.setParent(t)}getDrawLayer(){return $i(this,kT)}}kT=new WeakMap;const CT={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},XT=/^H(\d+)$/;var IT,DT,fT,LT,wT,xT,zT,vT,OT,_T,jT,KT,PT,AT,HT,qT,$T,tM;class eM{constructor(t,e){ta(this,zT),ta(this,IT),ta(this,DT,null),ta(this,fT),ta(this,LT,new Map),ta(this,wT),ta(this,xT,null),ea(this,IT,t.getStructTree()),ea(this,wT,e)}async render(){var t;if($i(this,fT))return $i(this,fT);const{promise:e,resolve:n,reject:l}=Promise.withResolvers();ea(this,fT,e);try{ea(this,DT,na(this,zT,_T).call(this,await $i(this,IT)))}catch(i){l(i)}return ea(this,IT,null),null==(t=$i(this,DT))||t.classList.add("structTree"),n($i(this,DT)),e}async getAriaAttributes(t){try{return await this.render(),$i(this,LT).get(t)}catch{}return null}hide(){$i(this,DT)&&!$i(this,DT).hidden&&($i(this,DT).hidden=!0)}show(){var t;null!=(t=$i(this,DT))&&t.hidden&&($i(this,DT).hidden=!1)}addElementsToTextLayer(){var t;if($i(this,xT)){for(const[e,n]of $i(this,xT))null==(t=document.getElementById(e))||t.append(n);$i(this,xT).clear(),ea(this,xT,null)}}}IT=new WeakMap,DT=new WeakMap,fT=new WeakMap,LT=new WeakMap,wT=new WeakMap,xT=new WeakMap,zT=new WeakSet,vT=function(t,e){const{alt:n,id:l,lang:i}=t;if(void 0!==n){let l=!1;const i=YS(n);for(const e of t.children)if("annotation"===e.type){let t=$i(this,LT).get(e.id);t||(t=new Map,$i(this,LT).set(e.id,t)),t.set("aria-label",i),l=!0}l||e.setAttribute("aria-label",i)}void 0!==l&&e.setAttribute("aria-owns",l),void 0!==i&&e.setAttribute("lang",YS(i,!0))},OT=function(t,e){const{alt:n,bbox:l,children:i}=t,a=null==i?void 0:i[0];if(!$i(this,wT)||!n||!l||"content"!==(null==a?void 0:a.type))return!1;const{id:s}=a;if(!s)return!1;e.setAttribute("aria-owns",s);const r=document.createElement("span");($i(this,xT)||ea(this,xT,new Map)).set(s,r),r.setAttribute("role","img"),r.setAttribute("aria-label",YS(n));const{pageHeight:o,pageX:c,pageY:d}=$i(this,wT),u="calc(var(--scale-factor)*",{style:h}=r;return h.width=`${u}${l[2]-l[0]}px)`,h.height=`${u}${l[3]-l[1]}px)`,h.left=`${u}${l[0]-c}px)`,h.top=`${u}${o-l[3]+d}px)`,!0},_T=function(t){if(!t)return null;const e=document.createElement("span");if("role"in t){const{role:n}=t,l=n.match(XT);if(l?(e.setAttribute("role","heading"),e.setAttribute("aria-level",l[1])):CT[n]&&e.setAttribute("role",CT[n]),"Figure"===n&&na(this,zT,OT).call(this,t,e))return e}if(na(this,zT,vT).call(this,t,e),t.children)if(1===t.children.length&&"id"in t.children[0])na(this,zT,vT).call(this,t.children[0],e);else for(const n of t.children)e.append(na(this,zT,_T).call(this,n));return e};const nM=class t{constructor(){ta(this,$T),ta(this,jT,!1),ta(this,KT,null),ta(this,PT,new Map),ta(this,AT,new Map)}setTextMapping(t){ea(this,KT,t)}enable(){if($i(this,jT))throw new Error("TextAccessibilityManager is already enabled.");if(!$i(this,KT))throw new Error("Text divs and strings have not been set.");if(ea(this,jT,!0),ea(this,KT,$i(this,KT).slice()),$i(this,KT).sort(na(t,HT,qT)),$i(this,PT).size>0){const t=$i(this,KT);for(const[e,n]of $i(this,PT))document.getElementById(e)?na(this,$T,tM).call(this,e,t[n]):$i(this,PT).delete(e)}for(const[t,e]of $i(this,AT))this.addPointerInTextLayer(t,e);$i(this,AT).clear()}disable(){$i(this,jT)&&($i(this,AT).clear(),ea(this,KT,null),ea(this,jT,!1))}removePointerInTextLayer(t){if(!$i(this,jT))return void $i(this,AT).delete(t);const e=$i(this,KT);if(!e||0===e.length)return;const{id:n}=t,l=$i(this,PT).get(n);if(void 0===l)return;const i=e[l];$i(this,PT).delete(n);let a=i.getAttribute("aria-owns");null!=a&&a.includes(n)&&(a=a.split(" ").filter((t=>t!==n)).join(" "),a?i.setAttribute("aria-owns",a):(i.removeAttribute("aria-owns"),i.setAttribute("role","presentation")))}addPointerInTextLayer(e,n){const{id:l}=e;if(!l)return null;if(!$i(this,jT))return $i(this,AT).set(e,n),null;n&&this.removePointerInTextLayer(e);const i=$i(this,KT);if(!i||0===i.length)return null;const a=CS(i,(n=>{var l;return na(l=t,HT,qT).call(l,e,n)<0})),s=Math.max(0,a-1),r=i[s];na(this,$T,tM).call(this,l,r),$i(this,PT).set(l,s);const o=r.parentNode;return null!=o&&o.classList.contains("markedContent")?o.id:null}moveElementInDOM(e,n,l,i){const a=this.addPointerInTextLayer(l,i);if(!e.hasChildNodes())return e.append(n),a;const s=Array.from(e.childNodes).filter((t=>t!==n));if(0===s.length)return a;const r=l||n,o=CS(s,(e=>{var n;return na(n=t,HT,qT).call(n,r,e)<0}));return 0===o?s[0].before(n):s[o-1].after(n),a}};jT=new WeakMap,KT=new WeakMap,PT=new WeakMap,AT=new WeakMap,HT=new WeakSet,qT=function(t,e){const n=t.getBoundingClientRect(),l=e.getBoundingClientRect();if(0===n.width&&0===n.height)return 1;if(0===l.width&&0===l.height)return-1;const i=n.y,a=n.y+n.height,s=n.y+n.height/2,r=l.y,o=l.y+l.height,c=l.y+l.height/2;if(s<=r&&c>=a)return-1;if(c<=i&&s>=o)return 1;const d=n.x+n.width/2,u=l.x+l.width/2;return d-u},$T=new WeakSet,tM=function(t,e){const n=e.getAttribute("aria-owns");null!=n&&n.includes(t)||e.setAttribute("aria-owns",n?`${n} ${t}`:t),e.removeAttribute("role")},ta(nM,HT);let lM=nM;var iM,aM,sM,rM,oM,cM,dM,uM,hM,mM,UM,pM;class FM{constructor({findController:t,eventBus:e,pageIndex:n}){ta(this,iM,null),this.findController=t,this.matches=[],this.eventBus=e,this.pageIdx=n,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(t,e){this.textDivs=t,this.textContentItemsStr=e}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,$i(this,iM)||(ea(this,iM,new AbortController),this.eventBus._on("updatetextlayermatches",(t=>{(t.pageIndex===this.pageIdx||-1===t.pageIndex)&&this._updateMatches()}),{signal:$i(this,iM).signal})),this._updateMatches()}disable(){var t;this.enabled&&(this.enabled=!1,null==(t=$i(this,iM))||t.abort(),ea(this,iM,null),this._updateMatches(!0))}_convertMatches(t,e){if(!t)return[];const{textContentItemsStr:n}=this;let l=0,i=0;const a=n.length-1,s=[];for(let r=0,o=t.length;r=i+n[l].length;)i+=n[l].length,l++;l===n.length&&console.error("Could not find a matching mapping");const c={begin:{divIdx:l,offset:o-i}};for(o+=e[r];l!==a&&o>i+n[l].length;)i+=n[l].length,l++;c.end={divIdx:l,offset:o-i},s.push(c)}return s}_renderMatches(t){if(0===t.length)return;const{findController:e,pageIdx:n}=this,{textContentItemsStr:l,textDivs:i}=this,a=n===e.selected.pageIdx,s=e.selected.matchIdx,r=e.state.highlightAll;let o=null;const c={divIdx:-1,offset:void 0};function d(t,e){const n=t.divIdx;return i[n].textContent="",u(n,0,t.offset,e)}function u(t,e,n,a){let s=i[t];if(s.nodeType===Node.TEXT_NODE){const e=document.createElement("span");s.before(e),e.append(s),i[t]=e,s=e}const r=l[t].substring(e,n),o=document.createTextNode(r);if(a){const t=document.createElement("span");if(t.className=`${a} appended`,t.append(o),s.append(t),a.includes("selected")){const{left:e}=t.getClientRects()[0],n=s.getBoundingClientRect().left;return e-n}return 0}return s.append(o),0}let h=s,m=h+1;if(r)h=0,m=t.length;else if(!a)return;let U=-1,p=-1;for(let F=h;F{n.classList.add("selecting")})),n.addEventListener("copy",(t=>{if(!$i(this,aM)){const e=document.getSelection();t.clipboardData.setData("text/plain",YS(CV(e.toString())))}jV(t)})),$i(bM,cM).set(n,t),na(e=bM,mM,pM).call(e)},mM=new WeakSet,UM=function(t){var e;$i(this,cM).delete(t),0===$i(this,cM).size&&(null==(e=$i(this,dM))||e.abort(),ea(this,dM,null))},pM=function(){if($i(this,dM))return;ea(this,dM,new AbortController);const{signal:t}=$i(this,dM),e=(t,e)=>{e.append(t),t.style.width="",t.style.height="",e.classList.remove("selecting")};let n=!1;var l,i;document.addEventListener("pointerdown",(()=>{n=!0}),{signal:t}),document.addEventListener("pointerup",(()=>{n=!1,$i(this,cM).forEach(e)}),{signal:t}),window.addEventListener("blur",(()=>{n=!1,$i(this,cM).forEach(e)}),{signal:t}),document.addEventListener("keyup",(()=>{n||$i(this,cM).forEach(e)}),{signal:t}),document.addEventListener("selectionchange",(()=>{var t;const n=document.getSelection();if(0===n.rangeCount)return void $i(this,cM).forEach(e);const a=new Set;for(let e=0;e{e===this._optionalContentConfigPromise&&($i(this,XM).initialOptionalContent=t.hasInitialVisibility)})),t.l10n||this.l10n.translate(this.div)}}get renderingState(){return $i(this,YM)}set renderingState(t){if(t!==$i(this,YM))switch(ea(this,YM,t),$i(this,gM)&&(clearTimeout($i(this,gM)),ea(this,gM,null)),t){case yS.PAUSED:this.div.classList.remove("loading");break;case yS.RUNNING:this.div.classList.add("loadingIcon"),ea(this,gM,setTimeout((()=>{this.div.classList.add("loading"),ea(this,gM,null)}),0));break;case yS.INITIAL:case yS.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(t){var e,n,l,i;this._isStandalone&&("CanvasText"===(null==(e=this.pageColors)?void 0:e.foreground)||"Canvas"===(null==(n=this.pageColors)?void 0:n.background))&&(null==(l=this._container)||l.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),null==(i=this._container)||i.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=t,this.pdfPageRotate=t.rotate;const a=(this.rotation+this.pdfPageRotate)%360;this.viewport=t.getViewport({scale:this.scale*zV.PDF_TO_CSS_UNITS,rotation:a}),na(this,DM,LM).call(this),this.reset()}destroy(){var t;this.reset(),null==(t=this.pdfPage)||t.cleanup()}hasEditableAnnotations(){var t;return!(null==(t=this.annotationLayer)||!t.hasEditableAnnotations())}get _textHighlighter(){return _V(this,"_textHighlighter",new FM({pageIndex:this.id-1,eventBus:this.eventBus,findController:$i(this,MM).findController}))}reset({keepAnnotationLayer:t=!1,keepAnnotationEditorLayer:e=!1,keepXfaLayer:n=!1,keepTextLayer:l=!1,keepCanvasWrapper:i=!1}={}){var a,s,r,o,c;this.cancelRendering({keepAnnotationLayer:t,keepAnnotationEditorLayer:e,keepXfaLayer:n,keepTextLayer:l}),this.renderingState=yS.INITIAL;const d=this.div,u=d.childNodes,h=t&&(null==(a=this.annotationLayer)?void 0:a.div)||null,m=e&&(null==(s=this.annotationEditorLayer)?void 0:s.div)||null,U=n&&(null==(r=this.xfaLayer)?void 0:r.div)||null,p=l&&(null==(o=this.textLayer)?void 0:o.div)||null,F=i&&$i(this,VM)||null;for(let b=u.length-1;b>=0;b--){const t=u[b];switch(t){case h:case m:case U:case p:case F:continue}t.remove();const e=$i(this,IM).indexOf(t);e>=0&&($i(this,IM)[e]=null)}d.removeAttribute("data-loaded"),h&&this.annotationLayer.hide(),m&&this.annotationEditorLayer.hide(),U&&this.xfaLayer.hide(),p&&this.textLayer.hide(),null==(c=this.structTreeLayer)||c.hide(),!i&&$i(this,VM)&&(ea(this,VM,null),na(this,DM,PM).call(this))}toggleEditingMode(t){this.hasEditableAnnotations()&&(ea(this,TM,t),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0}))}update({scale:t=0,rotation:e=null,optionalContentConfigPromise:n=null,drawingDelay:l=-1}){var i;this.scale=t||this.scale,"number"==typeof e&&(this.rotation=e),n instanceof Promise&&(this._optionalContentConfigPromise=n,n.then((t=>{n===this._optionalContentConfigPromise&&($i(this,XM).initialOptionalContent=t.hasInitialVisibility)}))),$i(this,XM).directDrawing=!0;const a=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*zV.PDF_TO_CSS_UNITS,rotation:a}),na(this,DM,LM).call(this),this._isStandalone&&(null==(i=this._container)||i.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let t=!1;if($i(this,yM))if(0===this.maxCanvasPixels)t=!0;else if(this.maxCanvasPixels>0){const{width:e,height:n}=this.viewport,{sx:l,sy:i}=this.outputScale;t=(Math.floor(e)*l|0)*(Math.floor(n)*i|0)>this.maxCanvasPixels}const e=l>=0&&l<1e3;if(e||t){if(e&&!t&&this.renderingState!==yS.FINISHED&&(this.cancelRendering({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:l}),this.renderingState=yS.FINISHED,$i(this,XM).directDrawing=!1),this.cssTransform({redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!e,hideTextLayer:e}),e)return;return void this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:$i(this,kM)})}}this.cssTransform({}),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0})}cancelRendering({keepAnnotationLayer:t=!1,keepAnnotationEditorLayer:e=!1,keepXfaLayer:n=!1,keepTextLayer:l=!1,cancelExtraDelay:i=0}={}){var a;this.renderTask&&(this.renderTask.cancel(i),this.renderTask=null),this.resume=null,this.textLayer&&(!l||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.annotationLayer&&(!t||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationEditorLayer&&(!e||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!n||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,null==(a=this._textHighlighter)||a.disable())}cssTransform({redrawAnnotationLayer:t=!1,redrawAnnotationEditorLayer:e=!1,redrawXfaLayer:n=!1,redrawTextLayer:l=!1,hideTextLayer:i=!1}){var a;const{canvas:s}=this;if(!s)return;const r=$i(this,EM);if(this.viewport!==r){const t=(360+this.viewport.rotation-r.rotation)%360;if(90===t||270===t){const{width:e,height:n}=this.viewport,l=n/e,i=e/n;s.style.transform=`rotate(${t}deg) scale(${l},${i})`}else s.style.transform=0===t?"":`rotate(${t}deg)`}t&&this.annotationLayer&&na(this,DM,xM).call(this),e&&this.annotationEditorLayer&&(this.drawLayer&&na(this,DM,vM).call(this),na(this,DM,zM).call(this)),n&&this.xfaLayer&&na(this,DM,OM).call(this),this.textLayer&&(i?(this.textLayer.hide(),null==(a=this.structTreeLayer)||a.hide()):l&&na(this,DM,_M).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(t,e){return this.viewport.convertToPdfPoint(t,e)}async draw(){this.renderingState!==yS.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:t,l10n:e,pageColors:n,pdfPage:l,viewport:i}=this;if(!l)throw this.renderingState=yS.FINISHED,new Error("pdfPage is not loaded");this.renderingState=yS.RUNNING;let a=$i(this,VM);if(a||(a=ea(this,VM,document.createElement("div")),a.classList.add("canvasWrapper"),na(this,DM,fM).call(this,a,"canvasWrapper")),!this.textLayer&&$i(this,CM)!==MS.DISABLE&&!l.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new lM),this.textLayer=new ZM({pdfPage:l,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:$i(this,CM)===MS.ENABLE_PERMISSIONS,onAppend:t=>{this.l10n.pause(),na(this,DM,fM).call(this,t,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&$i(this,WM)!==FV.DISABLE){const{annotationStorage:t,annotationEditorUIManager:e,downloadManager:n,enableScripting:i,fieldObjectsPromise:a,hasJSActionsPromise:s,linkService:r}=$i(this,MM);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new sQ({pdfPage:l,annotationStorage:t,imageResourcesPath:this.imageResourcesPath,renderForms:$i(this,WM)===FV.ENABLE_FORMS,linkService:r,downloadManager:n,enableScripting:i,hasJSActionsPromise:s,fieldObjectsPromise:a,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:e,onAppend:t=>{na(this,DM,fM).call(this,t,"annotationLayer")}})}const s=t=>{if(null==m||m(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this))return this.renderingState=yS.PAUSED,void(this.resume=()=>{this.renderingState=yS.RUNNING,t()});t()},{width:r,height:o}=i,c=document.createElement("canvas");c.setAttribute("role","presentation");const d=!(null==n||!n.background||null==n||!n.foreground),u=this.canvas,h=!u&&!d;this.canvas=c,ea(this,EM,i);let m=t=>{if(h)return a.prepend(c),void(m=null);t&&(u?(u.replaceWith(c),u.width=u.height=0):a.prepend(c),m=null)};const U=c.getContext("2d",{alpha:!1,willReadFrequently:!$i(this,QM)}),p=this.outputScale=new IV;if(0===this.maxCanvasPixels){const t=1/this.scale;p.sx*=t,p.sy*=t,ea(this,yM,!0)}else if(this.maxCanvasPixels>0){const t=r*o,e=Math.sqrt(this.maxCanvasPixels/t);p.sx>e||p.sy>e?(p.sx=e,p.sy=e,ea(this,yM,!0)):ea(this,yM,!1)}const F=XS(p.sx),b=XS(p.sy),Z=c.width=IS($S(r*p.sx),F[0]),N=c.height=IS($S(o*p.sy),b[0]),R=IS($S(r),F[1]),S=IS($S(o),b[1]);p.sx=Z/R,p.sy=N/S,$i(this,BM)!==F[1]&&(t.style.setProperty("--scale-round-x",`${F[1]}px`),ea(this,BM,F[1])),$i(this,JM)!==b[1]&&(t.style.setProperty("--scale-round-y",`${b[1]}px`),ea(this,JM,b[1]));const W=p.scaled?[p.sx,0,0,p.sy,0,0]:null,V={canvasContext:U,transform:W,viewport:i,annotationMode:$i(this,WM),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:n,isEditing:$i(this,TM)},Q=this.renderTask=l.render(V);Q.onContinue=s;const y=Q.promise.then((async()=>{var t;null==m||m(!0),await na(this,DM,AM).call(this,Q),this.structTreeLayer||(this.structTreeLayer=new eM(l,i.rawDims)),na(this,DM,_M).call(this),this.annotationLayer&&await na(this,DM,xM).call(this);const{annotationEditorUIManager:n}=$i(this,MM);n&&(this.drawLayer||(this.drawLayer=new YT({pageIndex:this.id})),await na(this,DM,vM).call(this),this.drawLayer.setParent(a),this.annotationEditorLayer||(this.annotationEditorLayer=new yT({uiManager:n,pdfPage:l,l10n:e,structTreeLayer:this.structTreeLayer,accessibilityManager:this._accessibilityManager,annotationLayer:null==(t=this.annotationLayer)?void 0:t.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:t=>{na(this,DM,fM).call(this,t,"annotationEditorLayer")}})),na(this,DM,zM).call(this))}),(t=>(t instanceof vV?(null==u||u.remove(),na(this,DM,PM).call(this)):null==m||m(!0),na(this,DM,AM).call(this,Q,t))));if(l.isPureXfa){if(!this.xfaLayer){const{annotationStorage:t,linkService:e}=$i(this,MM);this.xfaLayer=new NM({pdfPage:l,annotationStorage:t,linkService:e})}na(this,DM,OM).call(this)}return t.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),y}setPageLabel(t){this.pageLabel="string"==typeof t?t:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:this.pageLabel??this.id})),null!==this.pageLabel?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:t,initialOptionalContent:e,regularAnnotations:n}=$i(this,XM);return t&&e&&n?this.canvas:null}}async function pg(t){const e="",n=e.split("#",1)[0];let{info:l,metadata:i,contentDispositionFilename:a,contentLength:s}=await t.getMetadata();if(!s){const{length:e}=await t.getDownloadInfo();s=e}return{...l,baseURL:n,filesize:s,filename:a||TV(e),metadata:null==i?void 0:i.getRaw(),authors:null==i?void 0:i.get("dc:creator"),numPages:t.numPages,URL:e}}WM=new WeakMap,VM=new WeakMap,QM=new WeakMap,yM=new WeakMap,TM=new WeakMap,MM=new WeakMap,gM=new WeakMap,EM=new WeakMap,GM=new WeakMap,BM=new WeakMap,JM=new WeakMap,kM=new WeakMap,YM=new WeakMap,CM=new WeakMap,XM=new WeakMap,IM=new WeakMap,DM=new WeakSet,fM=function(t,e){const n=SM.get(e),l=$i(this,IM)[n];if($i(this,IM)[n]=t,l)l.replaceWith(t);else{for(let e=n-1;e>=0;e--){const n=$i(this,IM)[e];if(n)return void n.after(t)}this.div.prepend(t)}},LM=function(){const{viewport:t}=this;if(this.pdfPage){if($i(this,GM)===t.rotation)return;ea(this,GM,t.rotation)}OV(this.div,t,!0,!1)},wM=function(t,e){this.eventBus.dispatch(t,{source:this,pageNumber:this.id,error:e})},xM=async function(){let t=null;try{await this.annotationLayer.render(this.viewport,{structTreeLayer:this.structTreeLayer},"display")}catch(TB){console.error("#renderAnnotationLayer:",TB),t=TB}finally{na(this,DM,wM).call(this,"annotationlayerrendered",t)}},zM=async function(){let t=null;try{await this.annotationEditorLayer.render(this.viewport,"display")}catch(TB){console.error("#renderAnnotationEditorLayer:",TB),t=TB}finally{na(this,DM,wM).call(this,"annotationeditorlayerrendered",t)}},vM=async function(){try{await this.drawLayer.render("display")}catch(MB){console.error("#renderDrawLayer:",MB)}},OM=async function(){var t;let e=null;try{const t=await this.xfaLayer.render(this.viewport,"display");null!=t&&t.textDivs&&this._textHighlighter&&na(this,DM,KM).call(this,t.textDivs)}catch(n){console.error("#renderXfaLayer:",n),e=n}finally{null!=(t=this.xfaLayer)&&t.div&&(this.l10n.pause(),na(this,DM,fM).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),na(this,DM,wM).call(this,"xfalayerrendered",e)}},_M=async function(){if(!this.textLayer)return;let t=null;try{await this.textLayer.render(this.viewport)}catch(TB){if(TB instanceof dV)return;console.error("#renderTextLayer:",TB),t=TB}na(this,DM,wM).call(this,"textlayerrendered",t),na(this,DM,jM).call(this)},jM=async function(){var t,e,n;if(!this.textLayer)return;const l=await(null==(t=this.structTreeLayer)?void 0:t.render());l&&(this.l10n.pause(),null==(e=this.structTreeLayer)||e.addElementsToTextLayer(),this.canvas&&l.parentNode!==this.canvas&&this.canvas.append(l),this.l10n.resume()),null==(n=this.structTreeLayer)||n.show()},KM=async function(t){const e=await this.pdfPage.getTextContent(),n=[];for(const l of e.items)n.push(l.str);this._textHighlighter.setTextMapping(t,n),this._textHighlighter.enable()},PM=function(){const{canvas:t}=this;t&&(t.remove(),t.width=t.height=0,this.canvas=null,ea(this,EM,null))},AM=async function(t,e=null){if(t===this.renderTask&&(this.renderTask=null),e instanceof vV)ea(this,kM,null);else if(ea(this,kM,e),this.renderingState=yS.FINISHED,$i(this,XM).regularAnnotations=!t.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:$i(this,kM)}),e)throw e};class Fg{constructor(t){this._ready=new Promise(((e,n)=>{import(t).then((t=>{e(t.QuickJSSandbox())})).catch(n)}))}async createSandbox(t){(await this._ready).create(t)}async dispatchEventInSandbox(t){const e=await this._ready;setTimeout((()=>e.dispatchEvent(t)),0)}async destroySandbox(){(await this._ready).nukeSandbox()}}class bg{constructor({eventBus:t,externalServices:e=null,docProperties:n=null}){ta(this,og),ta(this,HM,null),ta(this,qM,null),ta(this,$M,null),ta(this,tg,null),ta(this,eg,null),ta(this,ng,null),ta(this,lg,null),ta(this,ig,null),ta(this,ag,!1),ta(this,sg,null),ta(this,rg,null),ea(this,eg,t),ea(this,ng,e),ea(this,$M,n)}setViewer(t){ea(this,ig,t)}async setDocument(t){var e;if($i(this,lg)&&await na(this,og,mg).call(this),ea(this,lg,t),!t)return;const[n,l,i]=await Promise.all([t.getFieldObjects(),t.getCalculationOrderIds(),t.getJSActions()]);if(!n&&!i)return void await na(this,og,mg).call(this);if(t!==$i(this,lg))return;try{ea(this,sg,na(this,og,hg).call(this))}catch(r){return console.error("setDocument:",r),void await na(this,og,mg).call(this)}const a=$i(this,eg);ea(this,tg,new AbortController);const{signal:s}=$i(this,tg);a._on("updatefromsandbox",(t=>{(null==t?void 0:t.source)===window&&na(this,og,cg).call(this,t.detail)}),{signal:s}),a._on("dispatcheventinsandbox",(t=>{var e;null==(e=$i(this,sg))||e.dispatchEventInSandbox(t.detail)}),{signal:s}),a._on("pagechanging",(({pageNumber:t,previous:e})=>{t!==e&&(na(this,og,ug).call(this,e),na(this,og,dg).call(this,t))}),{signal:s}),a._on("pagerendered",(({pageNumber:t})=>{this._pageOpenPending.has(t)&&t===$i(this,ig).currentPageNumber&&na(this,og,dg).call(this,t)}),{signal:s}),a._on("pagesdestroy",(async()=>{var t,e;await na(this,og,ug).call(this,$i(this,ig).currentPageNumber),await(null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"WillClose"})),null==(e=$i(this,HM))||e.resolve()}),{signal:s});try{const e=await $i(this,$M).call(this,t);if(t!==$i(this,lg))return;await $i(this,sg).createSandbox({objects:n,calculationOrder:l,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:{...e,actions:i}}),a.dispatch("sandboxcreated",{source:this})}catch(r){return console.error("setDocument:",r),void await na(this,og,mg).call(this)}await(null==(e=$i(this,sg))?void 0:e.dispatchEventInSandbox({id:"doc",name:"Open"})),await na(this,og,dg).call(this,$i(this,ig).currentPageNumber,!0),Promise.resolve().then((()=>{t===$i(this,lg)&&ea(this,ag,!0)}))}async dispatchWillSave(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"WillSave"})}async dispatchDidSave(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidSave"})}async dispatchWillPrint(){var t;if($i(this,sg)){await(null==(t=$i(this,rg))?void 0:t.promise),ea(this,rg,Promise.withResolvers());try{await $i(this,sg).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(TB){throw $i(this,rg).resolve(),ea(this,rg,null),TB}await $i(this,rg).promise}}async dispatchDidPrint(){var t;return null==(t=$i(this,sg))?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidPrint"})}get destroyPromise(){var t;return(null==(t=$i(this,qM))?void 0:t.promise)||null}get ready(){return $i(this,ag)}get _pageOpenPending(){return _V(this,"_pageOpenPending",new Set)}get _visitedPages(){return _V(this,"_visitedPages",new Map)}}HM=new WeakMap,qM=new WeakMap,$M=new WeakMap,tg=new WeakMap,eg=new WeakMap,ng=new WeakMap,lg=new WeakMap,ig=new WeakMap,ag=new WeakMap,sg=new WeakMap,rg=new WeakMap,og=new WeakSet,cg=async function(t){var e,n;const l=$i(this,ig),i=l.isInPresentationMode||l.isChangingPresentationMode,{id:a,siblings:s,command:r,value:o}=t;if(!a){switch(r){case"clear":console.clear();break;case"error":console.error(o);break;case"layout":if(!i){const t=qS(o);l.spreadMode=t.spreadMode}break;case"page-num":l.currentPageNumber=o+1;break;case"print":await l.pagesPromise,$i(this,eg).dispatch("print",{source:this});break;case"println":console.log(o);break;case"zoom":i||(l.currentScaleValue=o);break;case"SaveAs":$i(this,eg).dispatch("download",{source:this});break;case"FirstPage":l.currentPageNumber=1;break;case"LastPage":l.currentPageNumber=l.pagesCount;break;case"NextPage":l.nextPage();break;case"PrevPage":l.previousPage();break;case"ZoomViewIn":i||l.increaseScale();break;case"ZoomViewOut":i||l.decreaseScale();break;case"WillPrintFinished":null==(e=$i(this,rg))||e.resolve(),ea(this,rg,null);break}return}if(i&&t.focus)return;delete t.id,delete t.siblings;const c=s?[a,...s]:[a];for(const d of c){const e=document.querySelector(`[data-element-id="${d}"]`);e?e.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:t})):null==(n=$i(this,lg))||n.annotationStorage.setValue(d,t)}},dg=async function(t,e=!1){const n=$i(this,lg),l=this._visitedPages;if(e&&ea(this,HM,Promise.withResolvers()),!$i(this,HM))return;const i=$i(this,ig).getPageView(t-1);if((null==i?void 0:i.renderingState)!==yS.FINISHED)return void this._pageOpenPending.add(t);this._pageOpenPending.delete(t);const a=(async()=>{var e,a;const s=await(l.has(t)?null:null==(e=i.pdfPage)?void 0:e.getJSActions());n===$i(this,lg)&&await(null==(a=$i(this,sg))?void 0:a.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:t,actions:s}))})();l.set(t,a)},ug=async function(t){var e;const n=$i(this,lg),l=this._visitedPages;if(!$i(this,HM)||this._pageOpenPending.has(t))return;const i=l.get(t);i&&(l.set(t,null),await i,n===$i(this,lg)&&await(null==(e=$i(this,sg))?void 0:e.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:t})))},hg=function(){if(ea(this,qM,Promise.withResolvers()),$i(this,sg))throw new Error("#initScripting: Scripting already exists.");return $i(this,ng).createScripting()},mg=async function(){var t,e,n,l;if(!$i(this,sg))return ea(this,lg,null),void(null==(t=$i(this,qM))||t.resolve());$i(this,HM)&&(await Promise.race([$i(this,HM).promise,new Promise((t=>{setTimeout(t,1e3)}))]).catch((()=>{})),ea(this,HM,null)),ea(this,lg,null);try{await $i(this,sg).destroySandbox()}catch{}null==(e=$i(this,rg))||e.reject(new Error("Scripting destroyed.")),ea(this,rg,null),null==(n=$i(this,tg))||n.abort(),ea(this,tg,null),this._pageOpenPending.clear(),this._visitedPages.clear(),ea(this,sg,null),ea(this,ag,!1),null==(l=$i(this,qM))||l.resolve()};class Zg extends bg{constructor(t){t.externalServices||window.addEventListener("updatefromsandbox",(e=>{t.eventBus.dispatch("updatefromsandbox",{source:window,detail:e.detail})})),t.externalServices||(t.externalServices={createScripting:()=>new Fg(t.sandboxBundleSrc)}),t.docProperties||(t.docProperties=t=>pg(t)),super(t)}}const Ng=3e4;class Rg{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(t){this.pdfViewer=t}setThumbnailViewer(t){this.pdfThumbnailViewer=t}isHighestPriority(t){return this.highestPriorityPage===t.renderingId}renderHighestPriority(t){var e;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(t)&&(this.isThumbnailViewEnabled&&null!=(e=this.pdfThumbnailViewer)&&e.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),Ng)))}getHighestPriority(t,e,n,l=!1){const i=t.views,a=i.length;if(0===a)return null;for(let d=0;da){const l=t.ids;for(let t=1,i=r-s;t{this.renderHighestPriority()})).catch((t=>{t instanceof vV||console.error("renderView:",t)}));break}return!0}}const Sg=10,Wg={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function Vg(t){return Object.values(mV).includes(t)&&t!==mV.DISABLE}var Qg,yg,Tg,Mg,gg,Eg,Gg,Bg,Jg,kg,Yg,Cg,Xg,Ig,Dg,fg,Lg,wg,xg,zg,vg,Og,_g,jg,Kg,Pg,Ag,Hg,qg,$g,tE,eE,nE,lE,iE,aE,sE,rE,oE,cE,dE,uE,hE,mE,UE,pE,FE;class bE{constructor(t){ta(this,Tg),ta(this,Qg,new Set),ta(this,yg,0),ea(this,yg,t)}push(t){const e=$i(this,Qg);e.has(t)&&e.delete(t),e.add(t),e.size>$i(this,yg)&&na(this,Tg,Mg).call(this)}resize(t,e=null){ea(this,yg,t);const n=$i(this,Qg);if(e){const t=n.size;let l=1;for(const i of n)if(e.has(i.id)&&(n.delete(i),n.add(i)),++l>t)break}for(;n.size>$i(this,yg);)na(this,Tg,Mg).call(this)}has(t){return $i(this,Qg).has(t)}[Symbol.iterator](){return $i(this,Qg).keys()}}Qg=new WeakMap,yg=new WeakMap,Tg=new WeakSet,Mg=function(){const t=$i(this,Qg).keys().next().value;null==t||t.destroy(),$i(this,Qg).delete(t)};class ZE{constructor(t){var e,n;ta(this,tE),ta(this,gg,null),ta(this,Eg,null),ta(this,Gg,null),ta(this,Bg,mV.NONE),ta(this,Jg,null),ta(this,kg,FV.ENABLE_FORMS),ta(this,Yg,null),ta(this,Cg,null),ta(this,Xg,!1),ta(this,Ig,!1),ta(this,Dg,!1),ta(this,fg,!1),ta(this,Lg,!1),ta(this,wg,null),ta(this,xg,null),ta(this,zg,null),ta(this,vg,null),ta(this,Og,!1),ta(this,_g,null),ta(this,jg,!1),ta(this,Kg,0),ta(this,Pg,new ResizeObserver(na(this,tE,pE).bind(this))),ta(this,Ag,null),ta(this,Hg,null),ta(this,qg,!0),ta(this,$g,MS.ENABLE);const l="4.10.38";if($V!==l)throw new Error(`The API version "${$V}" does not match the Viewer version "${l}".`);if(this.container=t.container,this.viewer=t.viewer||t.container.firstElementChild,"DIV"!==(null==(e=this.container)?void 0:e.tagName)||"DIV"!==(null==(n=this.viewer)?void 0:n.tagName))throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&"absolute"!==getComputedStyle(this.container).position)throw new Error("The `container` must be absolutely positioned.");$i(this,Pg).observe(this.container),this.eventBus=t.eventBus,this.linkService=t.linkService||new cV,this.downloadManager=t.downloadManager||null,this.findController=t.findController||null,ea(this,Eg,t.altTextManager||null),ea(this,Cg,t.editorUndoBar||null),this.findController&&(this.findController.onIsPageVisible=t=>this._getVisiblePages().ids.has(t)),this._scriptingManager=t.scriptingManager||null,ea(this,$g,t.textLayerMode??MS.ENABLE),ea(this,kg,t.annotationMode??FV.ENABLE_FORMS),ea(this,Bg,t.annotationEditorMode??mV.NONE),ea(this,Gg,t.annotationEditorHighlightColors||null),ea(this,Ig,!0===t.enableHighlightFloatingButton),ea(this,fg,!0===t.enableUpdatedAddImage),ea(this,Lg,!0===t.enableNewAltTextWhenAddingImage),this.imageResourcesPath=t.imageResourcesPath||"",this.enablePrintAutoRotate=t.enablePrintAutoRotate||!1,this.removePageBorders=t.removePageBorders||!1,this.maxCanvasPixels=t.maxCanvasPixels,this.l10n=t.l10n,this.l10n||(this.l10n=new qy),ea(this,Dg,t.enablePermissions||!1),this.pageColors=t.pageColors||null,ea(this,xg,t.mlManager||null),ea(this,Xg,t.enableHWA||!1),ea(this,qg,!1!==t.supportsPinchToZoom),this.defaultRenderingQueue=!t.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new Rg,this.renderingQueue.setViewer(this)):this.renderingQueue=t.renderingQueue;const{abortSignal:i}=t;null==i||i.addEventListener("abort",(()=>{$i(this,Pg).disconnect(),ea(this,Pg,null)}),{once:!0}),this.scroll=BS(this.container,this._scrollUpdate.bind(this),i),this.presentationModeState=TS.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),na(this,tE,UE).call(this),this.eventBus._on("thumbnailrendered",(({pageNumber:t,pdfPage:e})=>{const n=this._pages[t-1];$i(this,gg).has(n)||null==e||e.cleanup()})),t.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(t){return this._pages[t]}getCachedPageViews(){return new Set($i(this,gg))}get pageViewsReady(){return this._pages.every((t=>null==t?void 0:t.pdfPage))}get renderForms(){return $i(this,kg)===FV.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(t){if(!Number.isInteger(t))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(t,!0)||console.error(`currentPageNumber: "${t}" is not a valid page.`))}_setCurrentPageNumber(t,e=!1){var n;if(this._currentPageNumber===t)return e&&na(this,tE,dE).call(this),!0;if(!(0=0&&(e=n+1)}this._setCurrentPageNumber(e,!0)||console.error(`currentPageLabel: "${t}" is not a valid page.`)}get currentScale(){return this._currentScale!==SS?this._currentScale:bS}set currentScale(t){if(isNaN(t))throw new Error("Invalid numeric scale.");this.pdfDocument&&na(this,tE,cE).call(this,t,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(t){this.pdfDocument&&na(this,tE,cE).call(this,t,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(t){if(!LS(t))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(t%=360,t<0&&(t+=360),this._pagesRotation===t))return;this._pagesRotation=t;const e=this._currentPageNumber;this.refresh(!0,{rotation:t}),this._currentScaleValue&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:t,pageNumber:e}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const t=this;return _V(this,"_layerProperties",{get annotationEditorUIManager(){return $i(t,Jg)},get annotationStorage(){var e;return null==(e=t.pdfDocument)?void 0:e.annotationStorage},get downloadManager(){return t.downloadManager},get enableScripting(){return!!t._scriptingManager},get fieldObjectsPromise(){var e;return null==(e=t.pdfDocument)?void 0:e.getFieldObjects()},get findController(){return t.findController},get hasJSActionsPromise(){var e;return null==(e=t.pdfDocument)?void 0:e.hasJSActions()},get linkService(){return t.linkService}})}async getAllText(){const t=[],e=[];for(let n=1,l=this.pdfDocument.numPages;n<=l;++n){if($i(this,jg))return null;e.length=0;const l=await this.pdfDocument.getPage(n),{items:i}=await l.getTextContent();for(const t of i)t.str&&e.push(t.str),t.hasEOL&&e.push("\n");t.push(YS(e.join("")))}return t.join("\n")}setDocument(t){var e,n,l;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),null==(e=this.findController)||e.setDocument(null),null==(n=this._scriptingManager)||n.setDocument(null),null==(l=$i(this,Jg))||l.destroy(),ea(this,Jg,null)),this.pdfDocument=t,!t)return;const i=t.numPages,a=t.getPage(1),s=t.getOptionalContentConfig({intent:"display"}),r=$i(this,Dg)?t.getPermissions():Promise.resolve(),{eventBus:o,pageColors:c,viewer:d}=this;ea(this,wg,new AbortController);const{signal:u}=$i(this,wg);if(i>Wg.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const t=this._scrollMode=gS.PAGE;o.dispatch("scrollmodechanged",{source:this,mode:t})}this._pagesCapability.promise.then((()=>{o.dispatch("pagesloaded",{source:this,pagesCount:i})}),(()=>{}));const h=t=>{const e=this._pages[t.pageNumber-1];e&&$i(this,gg).push(e)};o._on("pagerender",h,{signal:u});const m=t=>{t.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:t.timestamp}),o._off("pagerendered",m))};o._on("pagerendered",m,{signal:u}),Promise.all([a,r]).then((([e,n])=>{var l,a;if(t!==this.pdfDocument)return;this._firstPageCapability.resolve(e),this._optionalContentConfigPromise=s;const{annotationEditorMode:r,annotationMode:h,textLayerMode:m}=na(this,tE,eE).call(this,n);if(m!==MS.DISABLE){const t=ea(this,_g,document.createElement("div"));t.id="hiddenCopyElement",d.before(t)}if("function"==typeof AbortSignal.any&&r!==mV.DISABLE){const e=r;t.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):Vg(e)?(ea(this,Jg,new UV(this.container,d,$i(this,Eg),o,t,c,$i(this,Gg),$i(this,Ig),$i(this,fg),$i(this,Lg),$i(this,xg),$i(this,Cg),$i(this,qg))),o.dispatch("annotationeditoruimanager",{source:this,uiManager:$i(this,Jg)}),e!==mV.NONE&&(e===mV.STAMP&&(null==(l=$i(this,xg))||l.loadModel("altText")),$i(this,Jg).updateMode(e))):console.error(`Invalid AnnotationEditor mode: ${e}`)}const U=this._scrollMode===gS.PAGE?null:d,p=this.currentScale,F=e.getViewport({scale:p*zV.PDF_TO_CSS_UNITS});d.style.setProperty("--scale-factor",F.scale),null!=c&&c.background&&d.style.setProperty("--page-bg-color",c.background),("CanvasText"===(null==c?void 0:c.foreground)||"Canvas"===(null==c?void 0:c.background))&&(d.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),d.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let t=1;t<=i;++t){const e=new Ug({container:U,eventBus:o,id:t,scale:p,defaultViewport:F.clone(),optionalContentConfigPromise:s,renderingQueue:this.renderingQueue,textLayerMode:m,annotationMode:h,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:c,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:$i(this,Xg)});this._pages.push(e)}null==(a=this._pages[0])||a.setPdfPage(e),this._scrollMode===gS.PAGE?na(this,tE,iE).call(this):this._spreadMode!==ES.NONE&&this._updateSpreadMode(),na(this,tE,nE).call(this,u).then((async()=>{var e,n;if(t!==this.pdfDocument)return;if(null==(e=this.findController)||e.setDocument(t),null==(n=this._scriptingManager)||n.setDocument(t),$i(this,_g)&&document.addEventListener("copy",na(this,tE,lE).bind(this,m),{signal:u}),$i(this,Jg)&&o.dispatch("annotationeditormodechanged",{source:this,mode:$i(this,Bg)}),t.loadingParams.disableAutoFetch||i>Wg.FORCE_LAZY_PAGE_INIT)return void this._pagesCapability.resolve();let l=i-1;if(l<=0)this._pagesCapability.resolve();else for(let a=2;a<=i;++a){const e=t.getPage(a).then((t=>{const e=this._pages[a-1];e.pdfPage||e.setPdfPage(t),0===--l&&this._pagesCapability.resolve()}),(t=>{console.error(`Unable to get page ${a} to initialize viewer`,t),0===--l&&this._pagesCapability.resolve()}));a%Wg.PAUSE_EAGER_PAGE_INIT===0&&await e}})),o.dispatch("pagesinit",{source:this}),t.getMetadata().then((({info:e})=>{t===this.pdfDocument&&e.Language&&(d.lang=e.Language)})),this.defaultRenderingQueue&&this.update()})).catch((t=>{console.error("Unable to initialize viewer",t),this._pagesCapability.reject(t)}))}setPageLabels(t){var e;if(this.pdfDocument){t?Array.isArray(t)&&this.pdfDocument.numPages===t.length?this._pageLabels=t:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let t=0,n=this._pages.length;tthis.container.clientWidth}get isVerticalScrollbarEnabled(){return!this.isInPresentationMode&&this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const t=this._scrollMode===gS.PAGE?$i(this,Ag).pages:this._pages,e=this._scrollMode===gS.HORIZONTAL,n=e&&this._isContainerRtl;return fS({scrollEl:this.container,views:t,sortByVisibility:!0,horizontal:e,rtl:n})}cleanup(){for(const t of this._pages)t.renderingState!==yS.FINISHED&&t.reset()}_cancelRendering(){for(const t of this._pages)t.cancelRendering()}forceRendering(t){const e=t||this._getVisiblePages(),n=na(this,tE,mE).call(this,e),l=this._spreadMode!==ES.NONE&&this._scrollMode!==gS.HORIZONTAL,i=this.renderingQueue.getHighestPriority(e,this._pages,n,l);return!!i&&(na(this,tE,hE).call(this,i).then((()=>{this.renderingQueue.renderView(i)})),!0)}get hasEqualPageSizes(){const t=this._pages[0];for(let e=1,n=this._pages.length;e{const n=e.pdfPage.getViewport({scale:1}),l=zS(n);if(void 0===t)t=l;else if(this.enablePrintAutoRotate&&l!==t)return{width:n.height,height:n.width,rotation:(n.rotation-90)%360};return{width:n.width,height:n.height,rotation:n.rotation}}))}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(t){if(!(t instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${t}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=t,this.refresh(!1,{optionalContentConfigPromise:t}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:t}))}get scrollMode(){return this._scrollMode}set scrollMode(t){if(this._scrollMode!==t){if(!wS(t))throw new Error(`Invalid scroll mode: ${t}`);this.pagesCount>Wg.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=t,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:t}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(t=null){const e=this._scrollMode,n=this.viewer;n.classList.toggle("scrollHorizontal",e===gS.HORIZONTAL),n.classList.toggle("scrollWrapped",e===gS.WRAPPED),this.pdfDocument&&t&&(e===gS.PAGE?na(this,tE,iE).call(this):this._previousScrollMode===gS.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(t,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(t){if(this._spreadMode!==t){if(!xS(t))throw new Error(`Invalid spread mode: ${t}`);this._spreadMode=t,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:t}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(t=null){if(!this.pdfDocument)return;const e=this.viewer,n=this._pages;if(this._scrollMode===gS.PAGE)na(this,tE,iE).call(this);else if(e.textContent="",this._spreadMode===ES.NONE)for(const l of this._pages)e.append(l.div);else{const t=this._spreadMode-1;let l=null;for(let i=0,a=n.length;i=a;e--){const n=i[e],l=i[e+1]-1;if(nl)return l-t}if(e){const e=i[0];if(et)return e-t+1}break}break}case gS.HORIZONTAL:break;case gS.PAGE:case gS.VERTICAL:{if(this._spreadMode===ES.NONE)break;const n=this._spreadMode-1;if(e&&t%2!==n)break;if(!e&&t%2===n)break;const{views:l}=this._getVisiblePages(),i=e?t-1:t+1;for(const{id:t,percent:e,widthPercent:a}of l)if(t===i){if(e>0&&100===a)return 2;break}break}}return 1}nextPage(){const t=this._currentPageNumber,e=this.pagesCount;if(t>=e)return!1;const n=this._getPageAdvance(t,!1)||1;return this.currentPageNumber=Math.min(t+n,e),!0}previousPage(){const t=this._currentPageNumber;if(t<=1)return!1;const e=this._getPageAdvance(t,!0)||1;return this.currentPageNumber=Math.max(t-e,1),!0}updateScale({drawingDelay:t,scaleFactor:e=null,steps:n=null,origin:l}){if(null===n&&null===e)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let i=this._currentScale;if(e>0&&1!==e)i=Math.round(i*e*100)/100;else if(n){const t=n>0?ZS:1/ZS,e=n>0?Math.ceil:Math.floor;n=Math.abs(n);do{i=e(10*(i*t).toFixed(2))/10}while(--n>0)}i=Math.max(NS,Math.min(RS,i)),na(this,tE,cE).call(this,i,{noScroll:!1,drawingDelay:t,origin:l})}increaseScale(t={}){this.updateScale({...t,steps:t.steps??1})}decreaseScale(t={}){this.updateScale({...t,steps:-(t.steps??1)})}get containerTopLeft(){return $i(this,Yg)||ea(this,Yg,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return $i(this,Jg)?$i(this,Bg):mV.DISABLE}set annotationEditorMode({mode:t,editId:e=null,isFromKeyboard:n=!1}){var l;if(!$i(this,Jg))throw new Error("The AnnotationEditor is not enabled.");if($i(this,Bg)===t)return;if(!Vg(t))throw new Error(`Invalid AnnotationEditor mode: ${t}`);if(!this.pdfDocument)return;t===mV.STAMP&&(null==(l=$i(this,xg))||l.loadModel("altText"));const{eventBus:i}=this,a=()=>{na(this,tE,FE).call(this),ea(this,Bg,t),$i(this,Jg).updateMode(t,e,n),i.dispatch("annotationeditormodechanged",{source:this,mode:t})};if(t===mV.NONE||$i(this,Bg)===mV.NONE){const e=t!==mV.NONE;e||this.pdfDocument.annotationStorage.resetModifiedIds();for(const t of this._pages)t.toggleEditingMode(e);const n=na(this,tE,uE).call(this);if(e&&n){na(this,tE,FE).call(this),ea(this,zg,new AbortController);const t=AbortSignal.any([$i(this,wg).signal,$i(this,zg).signal]);return void i._on("pagerendered",(({pageNumber:t})=>{n.delete(t),0===n.size&&ea(this,vg,setTimeout(a,0))}),{signal:t})}}a()}refresh(t=!1,e=Object.create(null)){if(this.pdfDocument){for(const t of this._pages)t.update(e);null!==$i(this,Hg)&&(clearTimeout($i(this,Hg)),ea(this,Hg,null)),t||this.update()}}}gg=new WeakMap,Eg=new WeakMap,Gg=new WeakMap,Bg=new WeakMap,Jg=new WeakMap,kg=new WeakMap,Yg=new WeakMap,Cg=new WeakMap,Xg=new WeakMap,Ig=new WeakMap,Dg=new WeakMap,fg=new WeakMap,Lg=new WeakMap,wg=new WeakMap,xg=new WeakMap,zg=new WeakMap,vg=new WeakMap,Og=new WeakMap,_g=new WeakMap,jg=new WeakMap,Kg=new WeakMap,Pg=new WeakMap,Ag=new WeakMap,Hg=new WeakMap,qg=new WeakMap,$g=new WeakMap,tE=new WeakSet,eE=function(t){const e={annotationEditorMode:$i(this,Bg),annotationMode:$i(this,kg),textLayerMode:$i(this,$g)};return t&&(!t.includes(xV.COPY)&&$i(this,$g)===MS.ENABLE&&(e.textLayerMode=MS.ENABLE_PERMISSIONS),t.includes(xV.MODIFY_CONTENTS)||(e.annotationEditorMode=mV.DISABLE),!t.includes(xV.MODIFY_ANNOTATIONS)&&!t.includes(xV.FILL_INTERACTIVE_FORMS)&&$i(this,kg)===FV.ENABLE_FORMS&&(e.annotationMode=FV.ENABLE)),e},nE=async function(t){if("hidden"===document.visibilityState||!this.container.offsetParent||0===this._getVisiblePages().views.length)return;const e=Promise.withResolvers(),n=new AbortController;document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&e.resolve()}),{signal:"function"==typeof AbortSignal.any?AbortSignal.any([t,n.signal]):t}),await Promise.race([this._onePageRenderedCapability.promise,e.promise]),n.abort()},lE=function(t,e){const n=document.getSelection(),{focusNode:l,anchorNode:i}=n;if(i&&l&&n.containsNode($i(this,_g))){if($i(this,Og)||t===MS.ENABLE_PERMISSIONS)return void jV(e);ea(this,Og,!0);const{classList:n}=this.viewer;n.add("copyAll");const l=new AbortController;window.addEventListener("keydown",(t=>ea(this,jg,"Escape"===t.key)),{signal:l.signal}),this.getAllText().then((async t=>{null!==t&&await navigator.clipboard.writeText(t)})).catch((t=>{console.warn(`Something goes wrong when extracting the text: ${t.message}`)})).finally((()=>{ea(this,Og,!1),ea(this,jg,!1),l.abort(),n.remove("copyAll")})),jV(e)}},iE=function(){if(this._scrollMode!==gS.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const t=this._currentPageNumber,e=$i(this,Ag),n=this.viewer;if(n.textContent="",e.pages.length=0,this._spreadMode!==ES.NONE||this.isInPresentationMode){const l=new Set,i=this._spreadMode-1;-1===i?l.add(t-1):t%2!==i?(l.add(t-1),l.add(t)):(l.add(t-2),l.add(t-1));const a=document.createElement("div");if(a.className="spread",this.isInPresentationMode){const t=document.createElement("div");t.className="dummyPage",a.append(t)}for(const t of l){const n=this._pages[t];n&&(a.append(n.div),e.pages.push(n))}n.append(a)}else{const l=this._pages[t-1];n.append(l.div),e.pages.push(l)}e.scrollDown=t>=e.previousPageNumber,e.previousPageNumber=t},aE=function(t,e=null){const{div:n,id:l}=t;if(this._currentPageNumber!==l&&this._setCurrentPageNumber(l),this._scrollMode===gS.PAGE&&(na(this,tE,iE).call(this),this.update()),!e&&!this.isInPresentationMode){const t=n.offsetLeft+n.clientLeft,l=t+n.clientWidth,{scrollLeft:i,clientWidth:a}=this.container;(this._scrollMode===gS.HORIZONTAL||ti+a)&&(e={left:0,top:0})}GS(n,e),!this._currentScaleValue&&this._location&&(this._location=null)},sE=function(t){return t===this._currentScale||Math.abs(t-this._currentScale)<1e-15},rE=function(t,e,{noScroll:n=!1,preset:l=!1,drawingDelay:i=-1,origin:a=null}){if(this._currentScaleValue=e.toString(),na(this,tE,sE).call(this,t))return void(l&&this.eventBus.dispatch("scalechanging",{source:this,scale:t,presetValue:e}));this.viewer.style.setProperty("--scale-factor",t*zV.PDF_TO_CSS_UNITS);const s=i>=0&&i<1e3;this.refresh(!0,{scale:t,drawingDelay:s?i:-1}),s&&ea(this,Hg,setTimeout((()=>{ea(this,Hg,null),this.refresh()}),i));const r=this._currentScale;if(this._currentScale=t,!n){let e,n=this._currentPageNumber;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(n=this._location.pageNumber,e=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:n,destArray:e,allowNegativeOffset:!0}),Array.isArray(a)){const e=t/r-1,[n,l]=this.containerTopLeft;this.container.scrollLeft+=(a[0]-l)*e,this.container.scrollTop+=(a[1]-n)*e}}this.eventBus.dispatch("scalechanging",{source:this,scale:t,presetValue:l?e:void 0}),this.defaultRenderingQueue&&this.update()},oE=function(){return this._spreadMode!==ES.NONE&&this._scrollMode!==gS.HORIZONTAL?2:1},cE=function(t,e){let n=parseFloat(t);if(n>0)e.preset=!1,na(this,tE,rE).call(this,n,t,e);else{const l=this._pages[this._currentPageNumber-1];if(!l)return;let i=VS,a=QS;this.isInPresentationMode?(i=a=4,this._spreadMode!==ES.NONE&&(i*=2)):this.removePageBorders?i=a=0:this._scrollMode===gS.HORIZONTAL&&([i,a]=[a,i]);const s=(this.container.clientWidth-i)/l.width*l.scale/$i(this,tE,oE),r=(this.container.clientHeight-a)/l.height*l.scale;switch(t){case"page-actual":n=1;break;case"page-width":n=s;break;case"page-height":n=r;break;case"page-fit":n=Math.min(s,r);break;case"auto":const e=zS(l)?s:Math.min(r,s);n=Math.min(WS,e);break;default:return void console.error(`#setScale: "${t}" is an unknown zoom value.`)}e.preset=!0,na(this,tE,rE).call(this,n,t,e)}},dE=function(){const t=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&na(this,tE,cE).call(this,this._currentScaleValue,{noScroll:!0}),na(this,tE,aE).call(this,t)},uE=function(){const t=this._getVisiblePages(),e=[],{ids:n,views:l}=t;for(const i of l){const{view:t}=i;t.hasEditableAnnotations()?e.push(i):n.delete(t.id)}return 0===e.length?null:(this.renderingQueue.renderHighestPriority({first:e[0],last:e.at(-1),views:e,ids:n}),n)},hE=async function(t){if(t.pdfPage)return t.pdfPage;try{const e=await this.pdfDocument.getPage(t.id);return t.pdfPage||t.setPdfPage(e),e}catch(TB){return console.error("Unable to get page for page view",TB),null}},mE=function(t){var e,n;if(1===(null==(e=t.first)?void 0:e.id))return!0;if((null==(n=t.last)?void 0:n.id)===this.pagesCount)return!1;switch(this._scrollMode){case gS.PAGE:return $i(this,Ag).scrollDown;case gS.HORIZONTAL:return this.scroll.right}return this.scroll.down},UE=function(t=this.container.clientHeight){t!==$i(this,Kg)&&(ea(this,Kg,t),vS.setProperty("--viewer-container-height",`${t}px`))},pE=function(t){for(const e of t)if(e.target===this.container){na(this,tE,UE).call(this,Math.floor(e.borderBoxSize[0].blockSize)),ea(this,Yg,null);break}},FE=function(){var t;null==(t=$i(this,zg))||t.abort(),ea(this,zg,null),null!==$i(this,vg)&&(clearTimeout($i(this,vg)),ea(this,vg,null))};class NE extends ZE{_resetView(){super._resetView(),this._scrollMode=gS.PAGE,this._spreadMode=ES.NONE}set scrollMode(t){}_updateScrollMode(){}set spreadMode(t){}_updateSpreadMode(){}}pS.AnnotationLayerBuilder,pS.DownloadManager,pS.EventBus,pS.FindState,pS.GenericL10n,pS.LinkTarget,pS.PDFFindController,pS.PDFHistory;var RE=pS.PDFLinkService;pS.PDFPageView,pS.PDFScriptingManager,pS.PDFSinglePageViewer,pS.PDFViewer,pS.ProgressBar,pS.RenderingStates,pS.ScrollMode,pS.SimpleLinkService,pS.SpreadMode,pS.StructTreeLayerBuilder,pS.TextLayerBuilder,pS.XfaLayerBuilder,pS.parseQueryString;const SE=["id"],WE=["id"],VE=(0,r.Lk)("canvas",null,null,-1),QE={key:0,class:"textLayer"},yE={key:1,class:"annotationLayer"},TE=(0,r.pM)({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},linkService:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(t,{expose:e,emit:n}){const l=t,i=(0,ji.IJ)([]),a=(0,ji.KR)([]),s=(0,ji.IJ)(null);let c=null;const{doc:d}=mS({onError:t=>{i.value=[],n("loading-failed",t)},onPasswordRequest({callback:t,isWrongPassword:e}){n("password-requested",{callback:t,isWrongPassword:e})},onProgress:t=>{n("progress",t)},source:(0,ji.lW)(l,"source")}),u=(0,r.EW)((()=>{if(!d.value||!l.annotationLayer)return null;if(l.linkService)return l.linkService;const t=new RE;return t.setDocument(d.value),t.setViewer({scrollPageIntoView:({pageNumber:t})=>{n("internal-link-clicked",t)}}),t})),h=async t=>{if(!d.value)return;const e=await d.value.getData(),n=await d.value.getMetadata(),l=t??n.contentDispositionFilename??"";cS(e,l)},m=t=>{let e,n;return l.height&&!l.width?(n=l.height,e=n/t):(e=l.width??s.value.clientWidth,n=e*t),[e,n]},U=async(t=300,e="",n=!1)=>{var i,a,s;if(!d.value)return;const r=t/72,o=96/72;let c,u,h;try{c=window.document.createElement("div"),c.style.display="none",window.document.body.appendChild(c),u=await oS(c);const t=l.page&&!n?[l.page]:[...Array(d.value.numPages+1).keys()].slice(1);await Promise.all(t.map((async(t,e)=>{const n=await d.value.getPage(t),l=n.getViewport({scale:1,rotation:0});if(0===e){const t=l.width*r/o,e=l.height*r/o;rS(u,t,e)}const i=window.document.createElement("canvas");i.width=l.width*r,i.height=l.height*r,c.appendChild(i);const a=i.cloneNode();u.contentWindow.document.body.appendChild(a),await n.render({canvasContext:i.getContext("2d"),intent:"print",transform:[r,0,0,r,0,0],viewport:l}).promise,a.getContext("2d").drawImage(i,0,0)}))),e&&(h=window.document.title,window.document.title=e),null==(i=u.contentWindow)||i.focus(),null==(a=u.contentWindow)||a.print()}finally{h&&(window.document.title=h),uS(c),null==(s=c.parentNode)||s.removeChild(c)}},p=async()=>{if(d.value&&(null==c||!c.isAborted))try{i.value=l.page?[l.page]:[...Array(d.value.numPages+1).keys()].slice(1),a.value=Array(i.value.length).fill(1),await Promise.all(i.value.map((async(t,e)=>{const n=await d.value.getPage(t);if(null!=c&&c.isAborted)return;const i=((l.rotation%90===0?l.rotation:0)+n.rotate)%360,[r,o,u]=Array.from(s.value.getElementsByClassName("vue-pdf-embed__page")[e].children),h=!!(i/90%2),U=n.view[2]-n.view[0],p=n.view[3]-n.view[1],[N,R]=m(h?U/p:p/U),S=`${Math.floor(N)}px`,W=`${Math.floor(R)}px`,V=N/(h?p:U),Q=n.getViewport({scale:V,rotation:i});a.value[e]=V,r.style.display="block",r.style.width=S,r.style.height=W;const y=[F(n,Q.clone({scale:Q.scale*window.devicePixelRatio*l.scale}),r)];return l.textLayer&&y.push(Z(n,Q.clone({dontFlip:!0}),o)),l.annotationLayer&&y.push(b(n,Q.clone({dontFlip:!0}),u||o)),Promise.all(y)}))),null!=c&&c.isAborted||n("rendered")}catch(t){i.value=[],a.value=[],null!=c&&c.isAborted||n("rendering-failed",t)}},F=async(t,e,n)=>{n.width=e.width,n.height=e.height,await t.render({canvasContext:n.getContext("2d"),viewport:e}).promise},b=async(t,e,n)=>{dS(n),new eS({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:n,page:t,structTreeLayer:null,viewport:e}).render({annotations:await t.getAnnotations(),div:n,imageResourcesPath:l.imageResourcesPath,linkService:u.value,page:t,renderForms:!1,viewport:e})},Z=async(t,e,n)=>{dS(n),new iS({container:n,textContentSource:await t.getTextContent(),viewport:e}).render()};return(0,r.wB)(d,(t=>{t&&n("loaded",t)}),{immediate:!0}),(0,r.wB)((()=>[d.value,l.annotationLayer,l.height,l.imageResourcesPath,l.page,l.rotation,l.scale,l.textLayer,l.width]),(async([t])=>{t&&(c&&(c.isAborted=!0,await c.promise),uS(s.value),c={isAborted:!1,promise:p()},await c.promise,c=null)}),{immediate:!0}),(0,r.xo)((()=>{uS(s.value)})),e({doc:d,download:h,print:U}),(t,e)=>((0,r.uX)(),(0,r.CE)("div",{id:t.id,ref_key:"root",ref:s,class:"vue-pdf-embed"},[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.value,((e,n)=>((0,r.uX)(),(0,r.CE)("div",{key:e},[(0,r.RG)(t.$slots,"before-page",{page:e}),(0,r.Lk)("div",{id:t.id&&`${t.id}-${e}`,class:"vue-pdf-embed__page",style:(0,o.Tr)({"--scale-factor":a.value[n],position:"relative"})},[VE,t.textLayer?((0,r.uX)(),(0,r.CE)("div",QE)):(0,r.Q3)("",!0),t.annotationLayer?((0,r.uX)(),(0,r.CE)("div",yE)):(0,r.Q3)("",!0)],12,WE),(0,r.RG)(t.$slots,"after-page",{page:e})])))),128))],8,SE))}});null!=window&&window.Vue&&(window.VuePdfEmbed=TE,window.useVuePdfEmbed=mS),null!=nS&&nS.workerSrc||(nS.workerSrc=sS);var ME=n(8704),gE=n(4699),EE=n(6253),GE={name:"Attachment",components:{VuePdfEmbed:TE},props:{id:{type:String,default:""},size:{type:String,required:!0},type:{type:String,required:!0},path:{type:String,default:""},filename:{type:String,default:""},coin:{type:[Number,String],default:0},locked:{type:[Boolean,String,Number],default:!1}},data(){return{isPdfPreviewOpen:!1,pdfSrc:null,pdfWidth:0,pdfHeight:0,token:""}},mounted(){this.token=this.getToken()},computed:{isLocked(){return"boolean"===typeof this.locked?this.locked:"string"===typeof this.locked?"1"===this.locked||"true"===this.locked:"number"===typeof this.locked&&1===this.locked},hasCoin(){return this.coin&&parseInt(this.coin)>0},hasValidId(){return!!this.id&&""!==this.id.trim()},displayFilename(){return this.filename?this.filename:this.path?this.getFileName(this.path):"未知文件名"},downloadUrl(){return this.hasValidId?`/attachment/download/${this.id}`:this.path||"#"},showPreview(){return"pdf"===this.type.toLowerCase()&&!this.isLocked&&!(this.coin&&parseInt(this.coin)>0)}},methods:{getFileName(t){if(!t)return"";const e=t.split("/");return e[e.length-1]},getToken(){return ME.A.get("token")},async openPreview(){if(!this.token)return void EE.A.alert("您未登录,无法预览文件!","提示");if(this.isLocked)return void alert("非法操作!");if(this.coin&&parseInt(this.coin)>0)return void alert("非法操作!");const t=parseFloat(this.size);if(!isNaN(t)&&t>15)try{await EE.A.confirm("该文件较大,预览大文件可能消耗较多流量,并可能造成浏览器卡顿。确定要继续吗?","大文件预览提示")}catch(nG){return}this.isPdfPreviewOpen=!0,document.body.style.overflow="hidden",this.updatePdfViewerSize(),window.addEventListener("resize",this.updatePdfViewerSize);try{this.hasValidId?(this.isLoading=!0,fetch("https://newfront.xn--xhq44jb2fzpc.com/download/geturl",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{this.pdfSrc=t.url,this.isLoading=!1}))):(console.error("无有效的PDF源"),EE.A.alert("无法预览,文件路径无效","错误"))}catch($l){console.error("无法加载PDF:",$l),EE.A.alert("无法加载PDF","错误")}},closePdfPreview(){this.isPdfPreviewOpen=!1,document.body.style.overflow="",window.removeEventListener("resize",this.updatePdfViewerSize)},updatePdfViewerSize(){this.pdfWidth=window.innerWidth-40,this.pdfHeight=window.innerHeight-120},handleDownload(t){if(this.isLocked)return t.preventDefault(),void(this.token?(0,EE.A)({title:"输入密钥",message:"此文件已加密,请输入密钥:",showInput:!0,inputPlaceholder:"请输入密钥",confirmText:"确认",cancelText:"取消",cancel:!0}).then((({value:t})=>{t?fetch("https://newfront.xn--xhq44jb2fzpc.com/download/get-encrypt",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id,code:t})}).then((t=>t.json())).then((t=>{if(!t.url)throw new Error(t.message||"获取下载链接失败");window.open(t.url,"_blank")})).catch((t=>{console.error("下载加密文件失败:",t),EE.A.alert(t.message||"密钥验证失败","错误")})):EE.A.alert("密钥不能为空","提示")})).catch((()=>{})):EE.A.alert("您未登录,无法下载加密文件!","提示"));this.hasValidId?this.token?fetch("https://newfront.xn--xhq44jb2fzpc.com/download/check-download",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{switch(t.code){case 0:this.getDownloadUrl();break;case 1:if(!t?.remaining_coin)return void EE.A.alert("您未激活东币系统,无法下载文件!","提示");EE.A.confirm(`下载此文件需要 ${t.cost} 东币,您当前余额为 ${t.remaining_coin} 东币,是否确认下载?`,"确认下载").then((()=>{this.getDownloadUrl()})).catch((()=>{}));break;case-1:if(!t?.remaining_coin)return void EE.A.alert("您未激活东币系统,无法下载文件!","提示");EE.A.alert(`下载此文件需要 ${t.cost} 东币,您当前余额为 ${t.remaining_coin} 东币,余额不足!`,"余额不足");break;default:EE.A.alert("检查下载条件时发生错误","错误")}})).catch((t=>{console.error("检查下载条件失败:",t),EE.A.alert("检查下载条件时发生错误","错误")})):EE.A.alert("您未登录,无法下载文件!","提示"):EE.A.alert("无法下载,文件路径无效","错误")},getDownloadUrl(){fetch("https://newfront.xn--xhq44jb2fzpc.com/download/geturl",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.token},body:JSON.stringify({attachment_id:this.id})}).then((t=>t.json())).then((t=>{t.url?window.open(t.url,"_blank"):EE.A.alert("获取下载链接失败","错误")})).catch((t=>{console.error("获取下载链接失败:",t),EE.A.alert("获取下载链接失败","错误")}))}}},BE=n(1241);const JE=(0,BE.A)(GE,[["render",_i],["__scopeId","data-v-324aeea8"]]);var kE=JE;const YE={key:0,class:"loading-spinner"},CE={key:1,class:"error-message"},XE={key:2,class:"course-content"},IE={class:"course-header"},DE={class:"course-title"},fE={class:"course-tags"},LE={class:"course-info"},wE={class:"course-category"},xE={class:"course-teachers"},zE={class:"course-rating-container"},vE={class:"course-rating"},OE={class:"rating-number"},_E={class:"rating-stars"},jE={class:"rating-count"},KE={class:"course-actions"};function PE(t,e,n,l,i,a){return(0,r.uX)(),(0,r.CE)("div",{class:(0,o.C4)(["course-card",{loading:i.isLoading}])},[e[2]||(e[2]=(0,r.Lk)("div",{class:"course-card-header"},"相关课程",-1)),i.isLoading?((0,r.uX)(),(0,r.CE)("div",YE,e[1]||(e[1]=[(0,r.Lk)("div",{class:"spinner"},null,-1)]))):i.error?((0,r.uX)(),(0,r.CE)("div",CE," 当前课程似乎不存在呢~ ")):i.course?((0,r.uX)(),(0,r.CE)("div",XE,[(0,r.Lk)("div",IE,[(0,r.Lk)("h3",DE,(0,o.v_)(i.course.course_name),1),(0,r.Lk)("div",fE,[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.course.titles,((t,e)=>((0,r.uX)(),(0,r.CE)("span",{key:e,class:"course-tag",style:(0,o.Tr)({backgroundColor:t.color})},(0,o.v_)(t.title),5)))),128))])]),(0,r.Lk)("div",LE,[(0,r.Lk)("div",wE,(0,o.v_)(a.getCategoryName(i.course.category_id)),1),(0,r.Lk)("div",xE,(0,o.v_)(i.course.teachers),1)]),(0,r.Lk)("div",zE,[(0,r.Lk)("div",vE,[(0,r.Lk)("span",OE,(0,o.v_)(i.course.rating),1),(0,r.Lk)("div",_E,[(0,r.Lk)("span",{class:"stars",style:(0,o.Tr)({width:parseFloat(i.course.rating)/5*100+"%"})},null,4)]),(0,r.Lk)("span",jE,"("+(0,o.v_)(i.course.rating_count)+"人评)",1)])]),(0,r.Lk)("div",KE,[(0,r.Lk)("button",{class:"view-detail-button",onClick:e[0]||(e[0]=(...t)=>a.viewCourseDetail&&a.viewCourseDetail(...t))},"查看详情")])])):(0,r.Q3)("",!0)],2)}var AE={name:"CourseCard",props:{courseId:{type:[Number,String],required:!0}},data(){return{course:null,isLoading:!0,error:null,categoryMap:{1:"通识选修类",2:"人文选修类",3:"专业方向类",4:"体育类",5:"学科基础类",6:"暑期国际课",7:"数学与自然科学类",8:"重修专栏",9:"数学与自然科学类(必修)",10:"人文社会科学类(必修)",11:"学科基础类(必修)",12:"专业方向类(必修)",13:"实践类(必修)"}}},mounted(){this.fetchCourseDetails()},methods:{async fetchCourseDetails(){this.isLoading=!0,this.error=null;try{const t=await fetch(`https://coursesystem.xn--xhq44jb2fzpc.com/course-detail?course_id=${this.courseId}`);if(!t.ok)throw new Error("获取课程信息失败");this.course=await t.json()}catch(t){this.error=t.message,console.error("获取课程详情出错:",t)}finally{this.isLoading=!1}},getCategoryName(t){return this.categoryMap[t]||"未知类别"},viewCourseDetail(){const t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768;if(t)EE.A.confirm("建议在电脑端查看课程评分系统以获得最佳体验。仍要继续吗?","提示").then((()=>{const t=btoa(String(this.courseId)),e=`https://course.东北大学.com/courses?c=${t}`;window.open(e,"_blank")})).catch((()=>{console.log("用户取消了在移动端查看课程评分系统")}));else{const t=btoa(String(this.courseId)),e=`https://course.东北大学.com/courses?c=${t}`;window.open(e,"_blank")}}}};const HE=(0,BE.A)(AE,[["render",PE],["__scopeId","data-v-141565b1"]]);var qE=HE,$E=n(7943),tG=n.n($E),eG=(n(116),n(1806),{1362:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,6],n=[1,7],l=[1,8],i=[1,9],a=[1,12],s=[1,11],r=[1,15,24],o=[1,19],c=[1,31],d=[1,34],u=[1,32],h=[1,33],m=[1,35],U=[1,36],p=[1,37],F=[1,38],b=[1,41],Z=[1,42],N=[1,43],R=[1,44],S=[15,24],W=[1,56],V=[1,57],Q=[1,58],y=[1,59],T=[1,60],M=[1,61],g=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],E=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],G=[7,8,9,10,15,18,22,24],B=[47,77,78,79,80],J=[47,54,55,77,78,79,80],k=[47,50,51,52,53,77,78,79,80],Y=[15,24,31],C=[1,93],X={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,":":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,CLASS_DIAGRAM:22,statements:23,EOF:24,statement:25,className:26,alphaNumToken:27,classLiteralName:28,GENERICTYPE:29,relationStatement:30,LABEL:31,classStatement:32,methodStatement:33,annotationStatement:34,clickStatement:35,cssClassStatement:36,CLASS:37,STYLE_SEPARATOR:38,STRUCT_START:39,members:40,STRUCT_STOP:41,ANNOTATION_START:42,ANNOTATION_END:43,MEMBER:44,SEPARATOR:45,relation:46,STR:47,relationType:48,lineType:49,AGGREGATION:50,EXTENSION:51,COMPOSITION:52,DEPENDENCY:53,LINE:54,DOTTED_LINE:55,CALLBACK:56,LINK:57,LINK_TARGET:58,CLICK:59,CALLBACK_NAME:60,CALLBACK_ARGS:61,HREF:62,CSSCLASS:63,commentToken:64,textToken:65,graphCodeTokens:66,textNoTagsToken:67,TAGSTART:68,TAGEND:69,"==":70,"--":71,PCT:72,DEFAULT:73,SPACE:74,MINUS:75,keywords:76,UNICODE_TEXT:77,NUM:78,ALPHA:79,BQUOTE_STR:80,$accept:0,$end:1},terminals_:{2:"error",7:"direction_tb",8:"direction_bt",9:"direction_rl",10:"direction_lr",15:"NEWLINE",16:":",18:"open_directive",19:"type_directive",20:"arg_directive",21:"close_directive",22:"CLASS_DIAGRAM",24:"EOF",29:"GENERICTYPE",31:"LABEL",37:"CLASS",38:"STYLE_SEPARATOR",39:"STRUCT_START",41:"STRUCT_STOP",42:"ANNOTATION_START",43:"ANNOTATION_END",44:"MEMBER",45:"SEPARATOR",47:"STR",50:"AGGREGATION",51:"EXTENSION",52:"COMPOSITION",53:"DEPENDENCY",54:"LINE",55:"DOTTED_LINE",56:"CALLBACK",57:"LINK",58:"LINK_TARGET",59:"CLICK",60:"CALLBACK_NAME",61:"CALLBACK_ARGS",62:"HREF",63:"CSSCLASS",66:"graphCodeTokens",68:"TAGSTART",69:"TAGEND",70:"==",71:"--",72:"PCT",73:"DEFAULT",74:"SPACE",75:"MINUS",76:"keywords",77:"UNICODE_TEXT",78:"NUM",79:"ALPHA",80:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:l.setDirection("TB");break;case 5:l.setDirection("BT");break;case 6:l.setDirection("RL");break;case 7:l.setDirection("LR");break;case 11:l.parseDirective("%%{","open_directive");break;case 12:l.parseDirective(a[r],"type_directive");break;case 13:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 14:l.parseDirective("}%%","close_directive","class");break;case 19:case 20:this.$=a[r];break;case 21:this.$=a[r-1]+a[r];break;case 22:case 23:this.$=a[r-1]+"~"+a[r];break;case 24:l.addRelation(a[r]);break;case 25:a[r-1].title=l.cleanupLabel(a[r]),l.addRelation(a[r-1]);break;case 33:l.addClass(a[r]);break;case 34:l.addClass(a[r-2]),l.setCssClass(a[r-2],a[r]);break;case 35:l.addClass(a[r-3]),l.addMembers(a[r-3],a[r-1]);break;case 36:l.addClass(a[r-5]),l.setCssClass(a[r-5],a[r-3]),l.addMembers(a[r-5],a[r-1]);break;case 37:l.addAnnotation(a[r],a[r-2]);break;case 38:this.$=[a[r]];break;case 39:a[r].push(a[r-1]),this.$=a[r];break;case 40:case 42:case 43:break;case 41:l.addMember(a[r-1],l.cleanupLabel(a[r]));break;case 44:this.$={id1:a[r-2],id2:a[r],relation:a[r-1],relationTitle1:"none",relationTitle2:"none"};break;case 45:this.$={id1:a[r-3],id2:a[r],relation:a[r-1],relationTitle1:a[r-2],relationTitle2:"none"};break;case 46:this.$={id1:a[r-3],id2:a[r],relation:a[r-2],relationTitle1:"none",relationTitle2:a[r-1]};break;case 47:this.$={id1:a[r-4],id2:a[r],relation:a[r-2],relationTitle1:a[r-3],relationTitle2:a[r-1]};break;case 48:this.$={type1:a[r-2],type2:a[r],lineType:a[r-1]};break;case 49:this.$={type1:"none",type2:a[r],lineType:a[r-1]};break;case 50:this.$={type1:a[r-1],type2:"none",lineType:a[r]};break;case 51:this.$={type1:"none",type2:"none",lineType:a[r]};break;case 52:this.$=l.relationType.AGGREGATION;break;case 53:this.$=l.relationType.EXTENSION;break;case 54:this.$=l.relationType.COMPOSITION;break;case 55:this.$=l.relationType.DEPENDENCY;break;case 56:this.$=l.lineType.LINE;break;case 57:this.$=l.lineType.DOTTED_LINE;break;case 58:case 64:this.$=a[r-2],l.setClickEvent(a[r-1],a[r]);break;case 59:case 65:this.$=a[r-3],l.setClickEvent(a[r-2],a[r-1]),l.setTooltip(a[r-2],a[r]);break;case 60:case 68:this.$=a[r-2],l.setLink(a[r-1],a[r]);break;case 61:case 69:this.$=a[r-3],l.setLink(a[r-2],a[r-1],a[r]);break;case 62:case 70:this.$=a[r-3],l.setLink(a[r-2],a[r-1]),l.setTooltip(a[r-2],a[r]);break;case 63:case 71:this.$=a[r-4],l.setLink(a[r-3],a[r-2],a[r]),l.setTooltip(a[r-3],a[r-1]);break;case 66:this.$=a[r-3],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 67:this.$=a[r-4],l.setClickEvent(a[r-3],a[r-2],a[r-1]),l.setTooltip(a[r-3],a[r]);break;case 72:l.setCssClass(a[r-1],a[r])}},table:[{3:1,4:2,5:3,6:4,7:e,8:n,9:l,10:i,11:5,12:10,18:a,22:s},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:e,8:n,9:l,10:i,11:5,12:10,18:a,22:s},{1:[2,8]},t(r,[2,4]),t(r,[2,5]),t(r,[2,6]),t(r,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:o},t([16,21],[2,12]),{5:29,6:28,7:e,8:n,9:l,10:i,12:10,18:a,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:c,42:d,44:u,45:h,56:m,57:U,59:p,63:F,77:b,78:Z,79:N,80:R},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},t(S,[2,24],{31:[1,50]}),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),t(S,[2,31]),t(S,[2,32]),t(S,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:W,51:V,52:Q,53:y,54:T,55:M}),{26:62,27:39,28:40,77:b,78:Z,79:N,80:R},t(S,[2,42]),t(S,[2,43]),{27:63,77:b,78:Z,79:N},{26:64,27:39,28:40,77:b,78:Z,79:N,80:R},{26:65,27:39,28:40,77:b,78:Z,79:N,80:R},{26:66,27:39,28:40,77:b,78:Z,79:N,80:R},{47:[1,67]},t(g,[2,19],{27:39,28:40,26:68,29:[1,69],77:b,78:Z,79:N,80:R}),t(g,[2,20],{29:[1,70]}),t(E,[2,86]),t(E,[2,87]),t(E,[2,88]),t([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),t(G,[2,9]),{14:71,21:o},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:e,8:n,9:l,10:i,12:10,18:a,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:c,42:d,44:u,45:h,56:m,57:U,59:p,63:F,77:b,78:Z,79:N,80:R},t(S,[2,25]),{26:73,27:39,28:40,47:[1,74],77:b,78:Z,79:N,80:R},{46:75,48:54,49:55,50:W,51:V,52:Q,53:y,54:T,55:M},t(S,[2,41]),{49:76,54:T,55:M},t(B,[2,51],{48:77,50:W,51:V,52:Q,53:y}),t(J,[2,52]),t(J,[2,53]),t(J,[2,54]),t(J,[2,55]),t(k,[2,56]),t(k,[2,57]),t(S,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:b,78:Z,79:N},t(g,[2,21]),t(g,[2,22]),t(g,[2,23]),{15:[1,86]},{24:[2,18]},t(Y,[2,44]),{26:87,27:39,28:40,77:b,78:Z,79:N,80:R},{26:88,27:39,28:40,47:[1,89],77:b,78:Z,79:N,80:R},t(B,[2,50],{48:90,50:W,51:V,52:Q,53:y}),t(B,[2,49]),{27:91,77:b,78:Z,79:N},{40:92,44:C},{26:94,27:39,28:40,77:b,78:Z,79:N,80:R},t(S,[2,58],{47:[1,95]}),t(S,[2,60],{47:[1,97],58:[1,96]}),t(S,[2,64],{47:[1,98],61:[1,99]}),t(S,[2,68],{47:[1,101],58:[1,100]}),t(S,[2,72]),t(G,[2,10]),t(Y,[2,46]),t(Y,[2,45]),{26:102,27:39,28:40,77:b,78:Z,79:N,80:R},t(B,[2,48]),t(S,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:C},t(S,[2,37]),t(S,[2,59]),t(S,[2,61]),t(S,[2,62],{58:[1,106]}),t(S,[2,65]),t(S,[2,66],{47:[1,107]}),t(S,[2,69]),t(S,[2,70],{58:[1,108]}),t(Y,[2,47]),{40:109,44:C},t(S,[2,35]),{41:[2,39]},t(S,[2,63]),t(S,[2,67]),t(S,[2,71]),{41:[1,110]},t(S,[2,36])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},I={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:case 10:case 12:case 19:break;case 11:return 15;case 13:case 14:return 22;case 15:return this.begin("struct"),39;case 16:return"EOF_IN_STRUCT";case 17:return"OPEN_IN_STRUCT";case 18:return this.popState(),41;case 20:return"MEMBER";case 21:return 37;case 22:return 63;case 23:return 56;case 24:return 57;case 25:return 59;case 26:return 42;case 27:return 43;case 28:this.begin("generic");break;case 29:case 32:case 35:case 38:case 41:case 44:this.popState();break;case 30:return"GENERICTYPE";case 31:this.begin("string");break;case 33:return"STR";case 34:this.begin("bqstring");break;case 36:return"BQUOTE_STR";case 37:this.begin("href");break;case 39:return 62;case 40:this.begin("callback_name");break;case 42:this.popState(),this.begin("callback_args");break;case 43:return 60;case 45:return 61;case 46:case 47:case 48:case 49:return 58;case 50:case 51:return 51;case 52:case 53:return 53;case 54:return 52;case 55:return 50;case 56:return 54;case 57:return 55;case 58:return 31;case 59:return 38;case 60:return 75;case 61:return"DOT";case 62:return"PLUS";case 63:return 72;case 64:case 65:return"EQUALS";case 66:return 79;case 67:return"PUNCTUATION";case 68:return 78;case 69:return 77;case 70:return 74;case 71:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[44,45],inclusive:!1},callback_name:{rules:[41,42,43],inclusive:!1},href:{rules:[38,39],inclusive:!1},struct:{rules:[16,17,18,19,20],inclusive:!1},generic:{rules:[29,30],inclusive:!1},bqstring:{rules:[35,36],inclusive:!1},string:{rules:[32,33],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],inclusive:!0}}};function D(){this.yy={}}return X.lexer=I,D.prototype=X,X.Parser=D,new D}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8218).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},5890:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,5],l=[6,9,11,23,41],i=[1,17],a=[1,20],s=[1,25],r=[1,26],o=[1,27],c=[1,28],d=[1,37],u=[23,38,39],h=[4,6,9,11,23,41],m=[34,35,36,37],U=[22,29],p=[1,55],F={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,attributeKeyType:27,attributeComment:28,ATTRIBUTE_WORD:29,ATTRIBUTE_KEY:30,COMMENT:31,cardinality:32,relType:33,ZERO_OR_ONE:34,ZERO_OR_MORE:35,ONE_OR_MORE:36,ONLY_ONE:37,NON_IDENTIFYING:38,IDENTIFYING:39,WORD:40,open_directive:41,type_directive:42,arg_directive:43,close_directive:44,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",29:"ATTRIBUTE_WORD",30:"ATTRIBUTE_KEY",31:"COMMENT",34:"ZERO_OR_ONE",35:"ZERO_OR_MORE",36:"ONE_OR_MORE",37:"ONLY_ONE",38:"NON_IDENTIFYING",39:"IDENTIFYING",40:"WORD",41:"open_directive",42:"type_directive",43:"arg_directive",44:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[28,1],[18,3],[32,1],[32,1],[32,1],[32,1],[33,1],[33,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:case 16:case 23:case 24:case 25:case 35:this.$=a[r];break;case 12:l.addEntity(a[r-4]),l.addEntity(a[r-2]),l.addRelationship(a[r-4],a[r],a[r-2],a[r-3]);break;case 13:l.addEntity(a[r-3]),l.addAttributes(a[r-3],a[r-1]);break;case 14:l.addEntity(a[r-2]);break;case 15:l.addEntity(a[r]);break;case 17:this.$=[a[r]];break;case 18:a[r].push(a[r-1]),this.$=a[r];break;case 19:this.$={attributeType:a[r-1],attributeName:a[r]};break;case 20:this.$={attributeType:a[r-2],attributeName:a[r-1],attributeKeyType:a[r]};break;case 21:this.$={attributeType:a[r-2],attributeName:a[r-1],attributeComment:a[r]};break;case 22:this.$={attributeType:a[r-3],attributeName:a[r-2],attributeKeyType:a[r-1],attributeComment:a[r]};break;case 26:case 34:this.$=a[r].replace(/"/g,"");break;case 27:this.$={cardA:a[r],relType:a[r-1],cardB:a[r-2]};break;case 28:this.$=l.Cardinality.ZERO_OR_ONE;break;case 29:this.$=l.Cardinality.ZERO_OR_MORE;break;case 30:this.$=l.Cardinality.ONE_OR_MORE;break;case 31:this.$=l.Cardinality.ONLY_ONE;break;case 32:this.$=l.Identification.NON_IDENTIFYING;break;case 33:this.$=l.Identification.IDENTIFYING;break;case 36:l.parseDirective("%%{","open_directive");break;case 37:l.parseDirective(a[r],"type_directive");break;case 38:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 39:l.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,41:n},{1:[3]},t(l,[2,3],{5:6}),{3:7,4:e,7:3,12:4,41:n},{13:8,42:[1,9]},{42:[2,36]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,41:n},{1:[2,2]},{14:18,15:[1,19],44:a},t([15,44],[2,37]),t(l,[2,8],{1:[2,1]}),t(l,[2,4]),{7:15,10:21,12:4,17:16,23:i,41:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,11]),t(l,[2,15],{18:22,32:24,20:[1,23],34:s,35:r,36:o,37:c}),t([6,9,11,15,20,23,34,35,36,37,41],[2,16]),{11:[1,29]},{16:30,43:[1,31]},{11:[2,39]},t(l,[2,5]),{17:32,23:i},{21:33,22:[1,34],24:35,25:36,29:d},{33:38,38:[1,39],39:[1,40]},t(u,[2,28]),t(u,[2,29]),t(u,[2,30]),t(u,[2,31]),t(h,[2,9]),{14:41,44:a},{44:[2,38]},{15:[1,42]},{22:[1,43]},t(l,[2,14]),{21:44,22:[2,17],24:35,25:36,29:d},{26:45,29:[1,46]},{29:[2,23]},{32:47,34:s,35:r,36:o,37:c},t(m,[2,32]),t(m,[2,33]),{11:[1,48]},{19:49,23:[1,51],40:[1,50]},t(l,[2,13]),{22:[2,18]},t(U,[2,19],{27:52,28:53,30:[1,54],31:p}),t([22,29,30,31],[2,24]),{23:[2,27]},t(h,[2,10]),t(l,[2,12]),t(l,[2,34]),t(l,[2,35]),t(U,[2,20],{28:56,31:p}),t(U,[2,21]),t([22,29,31],[2,25]),t(U,[2,26]),t(U,[2,22])],defaultActions:{5:[2,36],7:[2,2],20:[2,39],31:[2,38],37:[2,23],44:[2,18],47:[2,27]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},b={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),41;case 1:return this.begin("type_directive"),42;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),44;case 4:return 43;case 5:case 6:case 8:case 13:case 17:break;case 7:return 11;case 9:return 9;case 10:return 40;case 11:return 4;case 12:return this.begin("block"),20;case 14:return 30;case 15:return 29;case 16:return 31;case 18:return this.popState(),22;case 19:case 32:return e.yytext[0];case 20:case 24:return 34;case 21:case 25:return 35;case 22:case 26:return 36;case 23:return 37;case 27:case 29:case 30:return 38;case 28:return 39;case 31:return 23;case 33:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17,18,19],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0}}};function Z(){this.yy={}}return F.lexer=b,Z.prototype=F,F.Parser=Z,new Z}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8009).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3602:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,9],n=[1,7],l=[1,6],i=[1,8],a=[1,20,21,22,23,38,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],s=[2,10],r=[1,20],o=[1,21],c=[1,22],d=[1,23],u=[1,30],h=[1,59],m=[1,45],U=[1,49],p=[1,33],F=[1,34],b=[1,35],Z=[1,36],N=[1,37],R=[1,53],S=[1,60],W=[1,48],V=[1,50],Q=[1,52],y=[1,56],T=[1,57],M=[1,38],g=[1,39],E=[1,40],G=[1,41],B=[1,58],J=[1,47],k=[1,51],Y=[1,54],C=[1,55],X=[1,46],I=[1,63],D=[1,68],f=[1,20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],L=[1,72],w=[1,71],x=[1,73],z=[20,21,23,74,75],v=[1,94],O=[1,99],_=[1,102],j=[1,103],K=[1,96],P=[1,101],A=[1,104],H=[1,97],q=[1,109],$=[1,108],tt=[1,98],et=[1,100],nt=[1,105],lt=[1,106],it=[1,107],at=[1,110],st=[20,21,22,23,74,75],rt=[20,21,22,23,48,74,75],ot=[20,21,22,23,40,47,48,50,52,54,56,58,59,60,62,64,66,67,69,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],ct=[20,21,23],dt=[20,21,23,47,59,60,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],ut=[1,12,20,21,22,23,24,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],ht=[47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],mt=[1,143],Ut=[1,151],pt=[1,152],Ft=[1,153],bt=[1,154],Zt=[1,138],Nt=[1,139],Rt=[1,135],St=[1,146],Wt=[1,147],Vt=[1,148],Qt=[1,149],yt=[1,150],Tt=[1,155],Mt=[1,156],gt=[1,141],Et=[1,144],Gt=[1,140],Bt=[1,137],Jt=[20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],kt=[1,159],Yt=[20,21,22,23,26,47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],Ct=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,60,61,63,65,66,68,70,74,75,79,80,81,82,83,84,85,88,98,99,102,104,105,106,107,115,116,117,118,119,120],Xt=[12,21,22,24],It=[22,99],Dt=[1,242],ft=[1,237],Lt=[1,238],wt=[1,246],xt=[1,243],zt=[1,240],vt=[1,239],Ot=[1,241],_t=[1,244],jt=[1,245],Kt=[1,247],Pt=[1,265],At=[20,21,23,99],Ht=[20,21,22,23,59,60,79,95,98,99,102,103,104,105,106],qt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,link:44,node:45,vertex:46,AMP:47,STYLE_SEPARATOR:48,idString:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,ALPHA:59,COLON:60,PIPE:61,CYLINDERSTART:62,CYLINDEREND:63,DIAMOND_START:64,DIAMOND_STOP:65,TAGEND:66,TRAPSTART:67,TRAPEND:68,INVTRAPSTART:69,INVTRAPEND:70,linkStatement:71,arrowText:72,TESTSTR:73,START_LINK:74,LINK:75,textToken:76,STR:77,keywords:78,STYLE:79,LINKSTYLE:80,CLASSDEF:81,CLASS:82,CLICK:83,DOWN:84,UP:85,textNoTags:86,textNoTagsToken:87,DEFAULT:88,stylesOpt:89,alphaNum:90,CALLBACKNAME:91,CALLBACKARGS:92,HREF:93,LINK_TARGET:94,HEX:95,numList:96,INTERPOLATE:97,NUM:98,COMMA:99,style:100,styleComponent:101,MINUS:102,UNIT:103,BRKT:104,DOT:105,PCT:106,TAGSTART:107,alphaNumToken:108,idStringToken:109,alphaNumStatement:110,direction_tb:111,direction_bt:112,direction_rl:113,direction_lr:114,PUNCTUATION:115,UNICODE_TEXT:116,PLUS:117,EQUALS:118,MULT:119,UNDERSCORE:120,graphCodeTokens:121,ARROW_CROSS:122,ARROW_POINT:123,ARROW_CIRCLE:124,ARROW_OPEN:125,QUOTE:126,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",47:"AMP",48:"STYLE_SEPARATOR",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"ALPHA",60:"COLON",61:"PIPE",62:"CYLINDERSTART",63:"CYLINDEREND",64:"DIAMOND_START",65:"DIAMOND_STOP",66:"TAGEND",67:"TRAPSTART",68:"TRAPEND",69:"INVTRAPSTART",70:"INVTRAPEND",73:"TESTSTR",74:"START_LINK",75:"LINK",77:"STR",79:"STYLE",80:"LINKSTYLE",81:"CLASSDEF",82:"CLASS",83:"CLICK",84:"DOWN",85:"UP",88:"DEFAULT",91:"CALLBACKNAME",92:"CALLBACKARGS",93:"HREF",94:"LINK_TARGET",95:"HEX",97:"INTERPOLATE",98:"NUM",99:"COMMA",102:"MINUS",103:"UNIT",104:"BRKT",105:"DOT",106:"PCT",107:"TAGSTART",111:"direction_tb",112:"direction_bt",113:"direction_rl",114:"direction_lr",115:"PUNCTUATION",116:"UNICODE_TEXT",117:"PLUS",118:"EQUALS",119:"MULT",120:"UNDERSCORE",122:"ARROW_CROSS",123:"ARROW_POINT",124:"ARROW_CIRCLE",125:"ARROW_OPEN",126:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[71,1],[72,3],[39,1],[39,2],[39,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[86,1],[86,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[96,1],[96,3],[89,1],[89,3],[100,1],[100,2],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[87,1],[87,1],[87,1],[87,1],[49,1],[49,2],[90,1],[90,2],[110,1],[110,1],[110,1],[110,1],[43,1],[43,1],[43,1],[43,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 5:l.parseDirective("%%{","open_directive");break;case 6:l.parseDirective(a[r],"type_directive");break;case 7:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 8:l.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:a[r]!==[]&&a[r-1].push(a[r]),this.$=a[r-1];break;case 12:case 78:case 80:case 92:case 148:case 150:case 151:case 74:case 146:this.$=a[r];break;case 19:l.setDirection("TB"),this.$="TB";break;case 20:l.setDirection(a[r-1]),this.$=a[r-1];break;case 35:this.$=a[r-1].nodes;break;case 41:this.$=l.addSubGraph(a[r-6],a[r-1],a[r-4]);break;case 42:this.$=l.addSubGraph(a[r-3],a[r-1],a[r-3]);break;case 43:this.$=l.addSubGraph(void 0,a[r-1],void 0);break;case 48:l.addLink(a[r-2].stmt,a[r],a[r-1]),this.$={stmt:a[r],nodes:a[r].concat(a[r-2].nodes)};break;case 49:l.addLink(a[r-3].stmt,a[r-1],a[r-2]),this.$={stmt:a[r-1],nodes:a[r-1].concat(a[r-3].nodes)};break;case 50:this.$={stmt:a[r-1],nodes:a[r-1]};break;case 51:this.$={stmt:a[r],nodes:a[r]};break;case 52:case 119:case 121:this.$=[a[r]];break;case 53:this.$=a[r-4].concat(a[r]);break;case 54:this.$=[a[r-2]],l.setClass(a[r-2],a[r]);break;case 55:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"square");break;case 56:this.$=a[r-5],l.addVertex(a[r-5],a[r-2],"circle");break;case 57:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"ellipse");break;case 58:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"stadium");break;case 59:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"subroutine");break;case 60:this.$=a[r-7],l.addVertex(a[r-7],a[r-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[r-5],a[r-3]]]));break;case 61:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"cylinder");break;case 62:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"round");break;case 63:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"diamond");break;case 64:this.$=a[r-5],l.addVertex(a[r-5],a[r-2],"hexagon");break;case 65:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"odd");break;case 66:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"trapezoid");break;case 67:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"inv_trapezoid");break;case 68:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"lean_right");break;case 69:this.$=a[r-3],l.addVertex(a[r-3],a[r-1],"lean_left");break;case 70:this.$=a[r],l.addVertex(a[r]);break;case 71:a[r-1].text=a[r],this.$=a[r-1];break;case 72:case 73:a[r-2].text=a[r-1],this.$=a[r-2];break;case 75:var o=l.destructLink(a[r],a[r-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:a[r-1]};break;case 76:o=l.destructLink(a[r]),this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 77:this.$=a[r-1];break;case 79:case 93:case 149:case 147:this.$=a[r-1]+""+a[r];break;case 94:case 95:this.$=a[r-4],l.addClass(a[r-2],a[r]);break;case 96:this.$=a[r-4],l.setClass(a[r-2],a[r]);break;case 97:case 105:this.$=a[r-1],l.setClickEvent(a[r-1],a[r]);break;case 98:case 106:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-2]),l.setTooltip(a[r-3],a[r]);break;case 99:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 100:this.$=a[r-4],l.setClickEvent(a[r-4],a[r-3],a[r-2]),l.setTooltip(a[r-4],a[r]);break;case 101:case 107:this.$=a[r-1],l.setLink(a[r-1],a[r]);break;case 102:case 108:this.$=a[r-3],l.setLink(a[r-3],a[r-2]),l.setTooltip(a[r-3],a[r]);break;case 103:case 109:this.$=a[r-3],l.setLink(a[r-3],a[r-2],a[r]);break;case 104:case 110:this.$=a[r-5],l.setLink(a[r-5],a[r-4],a[r]),l.setTooltip(a[r-5],a[r-2]);break;case 111:this.$=a[r-4],l.addVertex(a[r-2],void 0,void 0,a[r]);break;case 112:case 114:this.$=a[r-4],l.updateLink(a[r-2],a[r]);break;case 113:this.$=a[r-4],l.updateLink([a[r-2]],a[r]);break;case 115:this.$=a[r-8],l.updateLinkInterpolate([a[r-6]],a[r-2]),l.updateLink([a[r-6]],a[r]);break;case 116:this.$=a[r-8],l.updateLinkInterpolate(a[r-6],a[r-2]),l.updateLink(a[r-6],a[r]);break;case 117:this.$=a[r-6],l.updateLinkInterpolate([a[r-4]],a[r]);break;case 118:this.$=a[r-6],l.updateLinkInterpolate(a[r-4],a[r]);break;case 120:case 122:a[r-2].push(a[r]),this.$=a[r-2];break;case 124:this.$=a[r-1]+a[r];break;case 152:this.$="v";break;case 153:this.$="-";break;case 154:this.$={stmt:"dir",value:"TB"};break;case 155:this.$={stmt:"dir",value:"BT"};break;case 156:this.$={stmt:"dir",value:"RL"};break;case 157:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:l,24:i},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:l,24:i},t(a,s,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:l,24:i},{16:15,21:n,22:l,24:i},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{8:61,10:[1,62],15:I},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,65],21:[1,66],22:D,27:64,30:67},t(f,[2,11]),t(f,[2,12]),t(f,[2,13]),t(f,[2,14]),t(f,[2,15]),t(f,[2,16]),{9:69,20:L,21:w,23:x,44:70,71:74,74:[1,75],75:[1,76]},{9:77,20:L,21:w,23:x},{9:78,20:L,21:w,23:x},{9:79,20:L,21:w,23:x},{9:80,20:L,21:w,23:x},{9:81,20:L,21:w,23:x},{9:83,20:L,21:w,22:[1,82],23:x},t(f,[2,44]),t(z,[2,51],{30:84,22:D}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:v,47:O,59:_,60:j,77:[1,92],84:K,90:91,91:[1,89],93:[1,90],98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(f,[2,154]),t(f,[2,155]),t(f,[2,156]),t(f,[2,157]),t(st,[2,52],{48:[1,111]}),t(rt,[2,70],{109:123,40:[1,112],47:h,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],59:m,60:U,62:[1,118],64:[1,119],66:[1,120],67:[1,121],69:[1,122],84:R,88:S,98:W,99:V,102:Q,104:y,105:T,115:B,116:J,117:k,118:Y,119:C,120:X}),t(ot,[2,146]),t(ot,[2,171]),t(ot,[2,172]),t(ot,[2,173]),t(ot,[2,174]),t(ot,[2,175]),t(ot,[2,176]),t(ot,[2,177]),t(ot,[2,178]),t(ot,[2,179]),t(ot,[2,180]),t(ot,[2,181]),t(ot,[2,182]),t(ot,[2,183]),t(ot,[2,184]),t(ot,[2,185]),t(ot,[2,186]),{9:124,20:L,21:w,23:x},{11:125,14:[1,126]},t(ct,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,127]},t(dt,[2,34],{30:128,22:D}),t(f,[2,35]),{45:129,46:42,47:h,49:43,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},t(ut,[2,45]),t(ut,[2,46]),t(ut,[2,47]),t(ht,[2,74],{72:130,61:[1,132],73:[1,131]}),{22:mt,24:Ut,26:pt,38:Ft,39:133,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t([47,59,60,61,73,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,76]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),t(f,[2,39]),t(f,[2,40]),{22:mt,24:Ut,26:pt,38:Ft,39:157,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Jt,s,{17:158}),t(z,[2,50],{47:kt}),{26:v,47:O,59:_,60:j,84:K,90:160,95:[1,161],98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{88:[1,162],96:163,98:[1,164]},{26:v,47:O,59:_,60:j,84:K,88:[1,165],90:166,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{26:v,47:O,59:_,60:j,84:K,90:167,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,97],{22:[1,168],92:[1,169]}),t(ct,[2,101],{22:[1,170]}),t(ct,[2,105],{108:95,110:172,22:[1,171],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,107],{22:[1,173]}),t(Yt,[2,148]),t(Yt,[2,150]),t(Yt,[2,151]),t(Yt,[2,152]),t(Yt,[2,153]),t(Ct,[2,158]),t(Ct,[2,159]),t(Ct,[2,160]),t(Ct,[2,161]),t(Ct,[2,162]),t(Ct,[2,163]),t(Ct,[2,164]),t(Ct,[2,165]),t(Ct,[2,166]),t(Ct,[2,167]),t(Ct,[2,168]),t(Ct,[2,169]),t(Ct,[2,170]),{47:h,49:174,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},{22:mt,24:Ut,26:pt,38:Ft,39:175,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:177,42:bt,47:O,50:[1,176],59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:178,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:179,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:180,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{59:[1,181]},{22:mt,24:Ut,26:pt,38:Ft,39:182,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:183,42:bt,47:O,59:_,60:j,64:[1,184],66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:185,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:186,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:187,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ot,[2,147]),t(Xt,[2,3]),{8:188,15:I},{15:[2,7]},t(a,[2,28]),t(dt,[2,33]),t(z,[2,48],{30:189,22:D}),t(ht,[2,71],{22:[1,190]}),{22:[1,191]},{22:mt,24:Ut,26:pt,38:Ft,39:192,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,75:[1,193],76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Ct,[2,78]),t(Ct,[2,80]),t(Ct,[2,136]),t(Ct,[2,137]),t(Ct,[2,138]),t(Ct,[2,139]),t(Ct,[2,140]),t(Ct,[2,141]),t(Ct,[2,142]),t(Ct,[2,143]),t(Ct,[2,144]),t(Ct,[2,145]),t(Ct,[2,81]),t(Ct,[2,82]),t(Ct,[2,83]),t(Ct,[2,84]),t(Ct,[2,85]),t(Ct,[2,86]),t(Ct,[2,87]),t(Ct,[2,88]),t(Ct,[2,89]),t(Ct,[2,90]),t(Ct,[2,91]),{9:196,20:L,21:w,22:mt,23:x,24:Ut,26:pt,38:Ft,40:[1,195],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,197],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{22:D,30:198},{22:[1,199],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:[1,200]},{22:[1,201]},{22:[1,202],99:[1,203]},t(It,[2,119]),{22:[1,204]},{22:[1,205],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:[1,206],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,108:95,110:172,115:tt,116:et,117:nt,118:lt,119:it,120:at},{77:[1,207]},t(ct,[2,99],{22:[1,208]}),{77:[1,209],94:[1,210]},{77:[1,211]},t(Yt,[2,149]),{77:[1,212],94:[1,213]},t(st,[2,54],{109:123,47:h,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,115:B,116:J,117:k,118:Y,119:C,120:X}),{22:mt,24:Ut,26:pt,38:Ft,41:[1,214],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:215,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,51:[1,216],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,53:[1,217],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,55:[1,218],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,57:[1,219],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{60:[1,220]},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,63:[1,221],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,65:[1,222],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,39:223,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,41:[1,224],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,68:[1,225],70:[1,226],74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,66:Zt,68:[1,228],70:[1,227],74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{9:229,20:L,21:w,23:x},t(z,[2,49],{47:kt}),t(ht,[2,73]),t(ht,[2,72]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,61:[1,230],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ht,[2,75]),t(Ct,[2,79]),{22:mt,24:Ut,26:pt,38:Ft,39:231,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(Jt,s,{17:232}),t(f,[2,43]),{46:233,47:h,49:43,59:m,60:U,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,115:B,116:J,117:k,118:Y,119:C,120:X},{22:Dt,59:ft,60:Lt,79:wt,89:234,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:248,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:249,95:xt,97:[1,250],98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:251,95:xt,97:[1,252],98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{98:[1,253]},{22:Dt,59:ft,60:Lt,79:wt,89:254,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:255,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{26:v,47:O,59:_,60:j,84:K,90:256,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,98]),{77:[1,257]},t(ct,[2,102],{22:[1,258]}),t(ct,[2,103]),t(ct,[2,106]),t(ct,[2,108],{22:[1,259]}),t(ct,[2,109]),t(rt,[2,55]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,51:[1,260],59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,62]),t(rt,[2,57]),t(rt,[2,58]),t(rt,[2,59]),{59:[1,261]},t(rt,[2,61]),t(rt,[2,63]),{22:mt,24:Ut,26:pt,38:Ft,42:bt,47:O,59:_,60:j,65:[1,262],66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,65]),t(rt,[2,66]),t(rt,[2,68]),t(rt,[2,67]),t(rt,[2,69]),t(Xt,[2,4]),t([22,47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,77]),{22:mt,24:Ut,26:pt,38:Ft,41:[1,263],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,264],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},t(st,[2,53]),t(ct,[2,111],{99:Pt}),t(At,[2,121],{101:266,22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,102:vt,103:Ot,104:_t,105:jt,106:Kt}),t(Ht,[2,123]),t(Ht,[2,125]),t(Ht,[2,126]),t(Ht,[2,127]),t(Ht,[2,128]),t(Ht,[2,129]),t(Ht,[2,130]),t(Ht,[2,131]),t(Ht,[2,132]),t(Ht,[2,133]),t(Ht,[2,134]),t(Ht,[2,135]),t(ct,[2,112],{99:Pt}),t(ct,[2,113],{99:Pt}),{22:[1,267]},t(ct,[2,114],{99:Pt}),{22:[1,268]},t(It,[2,120]),t(ct,[2,94],{99:Pt}),t(ct,[2,95],{99:Pt}),t(ct,[2,96],{108:95,110:172,26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,100]),{94:[1,269]},{94:[1,270]},{51:[1,271]},{61:[1,272]},{65:[1,273]},{9:274,20:L,21:w,23:x},t(f,[2,42]),{22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,100:275,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},t(Ht,[2,124]),{26:v,47:O,59:_,60:j,84:K,90:276,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},{26:v,47:O,59:_,60:j,84:K,90:277,98:P,99:A,102:H,104:q,105:$,108:95,110:93,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(ct,[2,104]),t(ct,[2,110]),t(rt,[2,56]),{22:mt,24:Ut,26:pt,38:Ft,39:278,42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:134,77:Rt,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},t(rt,[2,64]),t(Jt,s,{17:279}),t(At,[2,122],{101:266,22:Dt,59:ft,60:Lt,79:wt,95:xt,98:zt,102:vt,103:Ot,104:_t,105:jt,106:Kt}),t(ct,[2,117],{108:95,110:172,22:[1,280],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),t(ct,[2,118],{108:95,110:172,22:[1,281],26:v,47:O,59:_,60:j,84:K,98:P,99:A,102:H,104:q,105:$,115:tt,116:et,117:nt,118:lt,119:it,120:at}),{22:mt,24:Ut,26:pt,38:Ft,41:[1,282],42:bt,47:O,59:_,60:j,66:Zt,74:Nt,76:194,78:145,79:St,80:Wt,81:Vt,82:Qt,83:yt,84:Tt,85:Mt,87:136,88:gt,98:P,99:A,102:Et,104:q,105:$,106:Gt,107:Bt,108:142,115:tt,116:et,117:nt,118:lt,119:it,120:at},{18:18,19:19,20:r,21:o,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:u,42:[1,283],43:31,45:32,46:42,47:h,49:43,59:m,60:U,79:p,80:F,81:b,82:Z,83:N,84:R,88:S,98:W,99:V,102:Q,104:y,105:T,109:44,111:M,112:g,113:E,114:G,115:B,116:J,117:k,118:Y,119:C,120:X},{22:Dt,59:ft,60:Lt,79:wt,89:284,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},{22:Dt,59:ft,60:Lt,79:wt,89:285,95:xt,98:zt,100:235,101:236,102:vt,103:Ot,104:_t,105:jt,106:Kt},t(rt,[2,60]),t(f,[2,41]),t(ct,[2,115],{99:Pt}),t(ct,[2,116],{99:Pt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],126:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},$t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:case 17:case 20:case 23:case 26:this.popState();break;case 9:return"STR";case 10:return 79;case 11:return 88;case 12:return 80;case 13:return 97;case 14:return 81;case 15:return 82;case 16:this.begin("href");break;case 18:return 93;case 19:this.begin("callbackname");break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 91;case 24:return 92;case 25:this.begin("click");break;case 27:return 83;case 28:case 29:return t.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 94;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 111;case 48:return 112;case 49:return 113;case 50:return 114;case 51:return 98;case 52:return 104;case 53:return 48;case 54:return 60;case 55:return 47;case 56:return 20;case 57:return 99;case 58:return 119;case 59:case 60:case 61:return 75;case 62:case 63:case 64:return 74;case 65:return 52;case 66:return 53;case 67:return 54;case 68:return 55;case 69:return 56;case 70:return 57;case 71:return 58;case 72:return 62;case 73:return 63;case 74:return 102;case 75:return 105;case 76:return 120;case 77:return 117;case 78:return 106;case 79:case 80:return 118;case 81:return 107;case 82:return 66;case 83:return 85;case 84:return"SEP";case 85:return 84;case 86:return 59;case 87:return 68;case 88:return 67;case 89:return 70;case 90:return 69;case 91:return 115;case 92:return 116;case 93:return 61;case 94:return 50;case 95:return 51;case 96:return 40;case 97:return 41;case 98:return 64;case 99:return 65;case 100:return 126;case 101:return 21;case 102:return 22;case 103:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],inclusive:!0}}};function te(){this.yy={}}return qt.lexer=$t,te.prototype=qt,qt.Parser=te,new te}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(5354).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9959:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,3],n=[1,5],l=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],i=[1,15],a=[1,16],s=[1,17],r=[1,18],o=[1,19],c=[1,20],d=[1,21],u=[1,22],h=[1,23],m=[1,25],U=[1,27],p=[1,30],F=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],b={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,excludes:16,includes:17,todayMarker:18,title:19,section:20,clickStatement:21,taskTxt:22,taskData:23,openDirective:24,typeDirective:25,closeDirective:26,":":27,argDirective:28,click:29,callbackname:30,callbackargs:31,href:32,clickStatementDebug:33,open_directive:34,type_directive:35,arg_directive:36,close_directive:37,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"excludes",17:"includes",18:"todayMarker",19:"title",20:"section",22:"taskTxt",23:"taskData",27:":",29:"click",30:"callbackname",31:"callbackargs",32:"href",34:"open_directive",35:"type_directive",36:"arg_directive",37:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 2:return a[r-1];case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:this.$=a[r];break;case 9:l.setDateFormat(a[r].substr(11)),this.$=a[r].substr(11);break;case 10:l.enableInclusiveEndDates(),this.$=a[r].substr(18);break;case 11:l.TopAxis(),this.$=a[r].substr(8);break;case 12:l.setAxisFormat(a[r].substr(11)),this.$=a[r].substr(11);break;case 13:l.setExcludes(a[r].substr(9)),this.$=a[r].substr(9);break;case 14:l.setIncludes(a[r].substr(9)),this.$=a[r].substr(9);break;case 15:l.setTodayMarker(a[r].substr(12)),this.$=a[r].substr(12);break;case 16:l.setTitle(a[r].substr(6)),this.$=a[r].substr(6);break;case 17:l.addSection(a[r].substr(8)),this.$=a[r].substr(8);break;case 19:l.addTask(a[r-1],a[r]),this.$="task";break;case 23:this.$=a[r-1],l.setClickEvent(a[r-1],a[r],null);break;case 24:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],a[r]);break;case 25:this.$=a[r-2],l.setClickEvent(a[r-2],a[r-1],null),l.setLink(a[r-2],a[r]);break;case 26:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-2],a[r-1]),l.setLink(a[r-3],a[r]);break;case 27:this.$=a[r-2],l.setClickEvent(a[r-2],a[r],null),l.setLink(a[r-2],a[r-1]);break;case 28:this.$=a[r-3],l.setClickEvent(a[r-3],a[r-1],a[r]),l.setLink(a[r-3],a[r-2]);break;case 29:this.$=a[r-1],l.setLink(a[r-1],a[r]);break;case 30:case 36:this.$=a[r-1]+" "+a[r];break;case 31:case 32:case 34:this.$=a[r-2]+" "+a[r-1]+" "+a[r];break;case 33:case 35:this.$=a[r-3]+" "+a[r-2]+" "+a[r-1]+" "+a[r];break;case 37:l.parseDirective("%%{","open_directive");break;case 38:l.parseDirective(a[r],"type_directive");break;case 39:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 40:l.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,24:4,34:n},{1:[3]},{3:6,4:2,5:e,24:4,34:n},t(l,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:s,15:r,16:o,17:c,18:d,19:u,20:h,21:24,22:m,24:4,29:U,34:n},{26:28,27:[1,29],37:p},t([27,37],[2,38]),t(l,[2,8],{1:[2,2]}),t(l,[2,4]),{4:26,10:31,12:i,13:a,14:s,15:r,16:o,17:c,18:d,19:u,20:h,21:24,22:m,24:4,29:U,34:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,9]),t(l,[2,10]),t(l,[2,11]),t(l,[2,12]),t(l,[2,13]),t(l,[2,14]),t(l,[2,15]),t(l,[2,16]),t(l,[2,17]),t(l,[2,18]),{23:[1,32]},t(l,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},t(l,[2,5]),t(l,[2,19]),t(l,[2,23],{31:[1,38],32:[1,39]}),t(l,[2,29],{30:[1,40]}),t(F,[2,21]),{26:41,37:p},{37:[2,39]},t(l,[2,24],{32:[1,42]}),t(l,[2,25]),t(l,[2,27],{31:[1,43]}),{11:[1,44]},t(l,[2,26]),t(l,[2,28]),t(F,[2,22])],defaultActions:{5:[2,37],6:[2,1],30:[2,40],37:[2,39]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},Z={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),34;case 1:return this.begin("type_directive"),35;case 2:return this.popState(),this.begin("arg_directive"),27;case 3:return this.popState(),this.popState(),37;case 4:return 36;case 5:case 6:case 7:case 9:case 10:case 11:break;case 8:return 11;case 12:this.begin("href");break;case 13:case 16:case 19:case 22:this.popState();break;case 14:return 32;case 15:this.begin("callbackname");break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 30;case 20:return 31;case 21:this.begin("click");break;case 23:return 29;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 17;case 30:return 16;case 31:return 18;case 32:return"date";case 33:return 19;case 34:return 20;case 35:return 22;case 36:return 23;case 37:return 27;case 38:return 7;case 39:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],inclusive:!0}}};function N(){this.yy={}}return b.lexer=Z,N.prototype=b,b.Parser=N,new N}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(6878).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},2553:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[2,3],n=[1,7],l=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],s=[1,32],r={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:return a[r-1];case 2:return l.setDirection(a[r-3]),a[r-1];case 4:l.setOptions(a[r-1]),this.$=a[r];break;case 5:a[r-1]+=a[r],this.$=a[r-1];break;case 7:this.$=[];break;case 8:a[r-1].push(a[r]),this.$=a[r-1];break;case 9:this.$=a[r-1];break;case 11:l.commit(a[r]);break;case 12:l.branch(a[r]);break;case 13:l.checkout(a[r]);break;case 14:l.merge(a[r]);break;case 15:l.reset(a[r]);break;case 16:this.$="";break;case 17:this.$=a[r];break;case 18:this.$=a[r-1]+":"+a[r];break;case 19:this.$=a[r-1]+":"+l.count,l.count=0;break;case 20:l.count=0;break;case 21:l.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(l,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(l,[2,8]),{12:[1,22]},t(l,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(l,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:s},{12:a,25:33,26:s},{12:[2,18]},{12:a,25:34,26:s},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},o={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:case 18:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return r.lexer=o,c.prototype=r,r.Parser=c,new c}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8183).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6765:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,l,i,a,s){switch(a.length,i){case 1:return l;case 4:break;case 6:l.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=l,i.prototype=n,n.Parser=i,new i}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(1428).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},7062:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,4],n=[1,5],l=[1,6],i=[1,7],a=[1,9],s=[1,11,13,20,21,22,23],r=[2,5],o=[1,6,11,13,20,21,22,23],c=[20,21,22],d=[2,8],u=[1,18],h=[1,19],m=[1,24],U=[6,20,21,22,23],p={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,openDirective:15,typeDirective:16,closeDirective:17,":":18,argDirective:19,NEWLINE:20,";":21,EOF:22,open_directive:23,type_directive:24,arg_directive:25,close_directive:26,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",18:":",20:"NEWLINE",21:";",22:"EOF",23:"open_directive",24:"type_directive",25:"arg_directive",26:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:l.setShowData(!0);break;case 7:this.$=a[r-1];break;case 9:l.addSection(a[r-1],l.cleanupValue(a[r]));break;case 10:this.$=a[r].trim(),l.setTitle(this.$);break;case 17:l.parseDirective("%%{","open_directive");break;case 18:l.parseDirective(a[r],"type_directive");break;case 19:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 20:l.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},{1:[3]},{3:10,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},{3:11,4:2,5:3,6:e,15:8,20:n,21:l,22:i,23:a},t(s,r,{7:12,8:[1,13]}),t(o,[2,14]),t(o,[2,15]),t(o,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},t(c,d,{15:8,9:16,10:17,5:20,1:[2,3],11:u,13:h,23:a}),t(s,r,{7:21}),{17:22,18:[1,23],26:m},t([18,26],[2,18]),t(s,[2,6]),{4:25,20:n,21:l,22:i},{12:[1,26]},{14:[1,27]},t(c,[2,11]),t(c,d,{15:8,9:16,10:17,5:20,1:[2,4],11:u,13:h,23:a}),t(U,[2,12]),{19:28,25:[1,29]},t(U,[2,20]),t(s,[2,7]),t(c,[2,9]),t(c,[2,10]),{17:30,26:m},{26:[2,19]},t(U,[2,13])],defaultActions:{9:[2,17],10:[2,1],11:[2,2],29:[2,19]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},F={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),23;case 1:return this.begin("type_directive"),24;case 2:return this.popState(),this.begin("arg_directive"),18;case 3:return this.popState(),this.popState(),26;case 4:return 25;case 5:case 6:case 8:case 9:break;case 7:return 20;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return 8;case 17:return"value";case 18:return 22}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17,18],inclusive:!0}}};function b(){this.yy={}}return p.lexer=F,b.prototype=p,p.Parser=b,new b}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(4551).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3176:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,3],n=[1,5],l=[1,17],i=[2,10],a=[1,21],s=[1,22],r=[1,23],o=[1,24],c=[1,25],d=[1,26],u=[1,19],h=[1,27],m=[1,28],U=[1,31],p=[66,67],F=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],b=[5,6,8,14,35,36,37,38,39,40,48,66,67],Z=[1,51],N=[1,52],R=[1,53],S=[1,54],W=[1,55],V=[1,56],Q=[1,57],y=[57,58],T=[1,69],M=[1,65],g=[1,66],E=[1,67],G=[1,68],B=[1,70],J=[1,74],k=[1,75],Y=[1,72],C=[1,73],X=[5,8,14,35,36,37,38,39,40,48,66,67],I={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,open_directive:14,type_directive:15,arg_directive:16,close_directive:17,requirementDef:18,elementDef:19,relationshipDef:20,requirementType:21,requirementName:22,STRUCT_START:23,requirementBody:24,ID:25,COLONSEP:26,id:27,TEXT:28,text:29,RISK:30,riskLevel:31,VERIFYMTHD:32,verifyType:33,STRUCT_STOP:34,REQUIREMENT:35,FUNCTIONAL_REQUIREMENT:36,INTERFACE_REQUIREMENT:37,PERFORMANCE_REQUIREMENT:38,PHYSICAL_REQUIREMENT:39,DESIGN_CONSTRAINT:40,LOW_RISK:41,MED_RISK:42,HIGH_RISK:43,VERIFY_ANALYSIS:44,VERIFY_DEMONSTRATION:45,VERIFY_INSPECTION:46,VERIFY_TEST:47,ELEMENT:48,elementName:49,elementBody:50,TYPE:51,type:52,DOCREF:53,ref:54,END_ARROW_L:55,relationship:56,LINE:57,END_ARROW_R:58,CONTAINS:59,COPIES:60,DERIVES:61,SATISFIES:62,VERIFIES:63,REFINES:64,TRACES:65,unqString:66,qString:67,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"open_directive",15:"type_directive",16:"arg_directive",17:"close_directive",23:"STRUCT_START",25:"ID",26:"COLONSEP",28:"TEXT",30:"RISK",32:"VERIFYMTHD",34:"STRUCT_STOP",35:"REQUIREMENT",36:"FUNCTIONAL_REQUIREMENT",37:"INTERFACE_REQUIREMENT",38:"PERFORMANCE_REQUIREMENT",39:"PHYSICAL_REQUIREMENT",40:"DESIGN_CONSTRAINT",41:"LOW_RISK",42:"MED_RISK",43:"HIGH_RISK",44:"VERIFY_ANALYSIS",45:"VERIFY_DEMONSTRATION",46:"VERIFY_INSPECTION",47:"VERIFY_TEST",48:"ELEMENT",51:"TYPE",53:"DOCREF",55:"END_ARROW_L",57:"LINE",58:"END_ARROW_R",59:"CONTAINS",60:"COPIES",61:"DERIVES",62:"SATISFIES",63:"VERIFIES",64:"REFINES",65:"TRACES",66:"unqString",67:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 6:l.parseDirective("%%{","open_directive");break;case 7:l.parseDirective(a[r],"type_directive");break;case 8:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 9:l.parseDirective("}%%","close_directive","pie");break;case 10:this.$=[];break;case 16:l.addRequirement(a[r-3],a[r-4]);break;case 17:l.setNewReqId(a[r-2]);break;case 18:l.setNewReqText(a[r-2]);break;case 19:l.setNewReqRisk(a[r-2]);break;case 20:l.setNewReqVerifyMethod(a[r-2]);break;case 23:this.$=l.RequirementType.REQUIREMENT;break;case 24:this.$=l.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 25:this.$=l.RequirementType.INTERFACE_REQUIREMENT;break;case 26:this.$=l.RequirementType.PERFORMANCE_REQUIREMENT;break;case 27:this.$=l.RequirementType.PHYSICAL_REQUIREMENT;break;case 28:this.$=l.RequirementType.DESIGN_CONSTRAINT;break;case 29:this.$=l.RiskLevel.LOW_RISK;break;case 30:this.$=l.RiskLevel.MED_RISK;break;case 31:this.$=l.RiskLevel.HIGH_RISK;break;case 32:this.$=l.VerifyType.VERIFY_ANALYSIS;break;case 33:this.$=l.VerifyType.VERIFY_DEMONSTRATION;break;case 34:this.$=l.VerifyType.VERIFY_INSPECTION;break;case 35:this.$=l.VerifyType.VERIFY_TEST;break;case 36:l.addElement(a[r-3]);break;case 37:l.setNewElementType(a[r-2]);break;case 38:l.setNewElementDocRef(a[r-2]);break;case 41:l.addRelationship(a[r-2],a[r],a[r-4]);break;case 42:l.addRelationship(a[r-2],a[r-4],a[r]);break;case 43:this.$=l.Relationships.CONTAINS;break;case 44:this.$=l.Relationships.COPIES;break;case 45:this.$=l.Relationships.DERIVES;break;case 46:this.$=l.Relationships.SATISFIES;break;case 47:this.$=l.Relationships.VERIFIES;break;case 48:this.$=l.Relationships.REFINES;break;case 49:this.$=l.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n},{1:[3]},{3:7,4:2,5:[1,6],6:e,9:4,14:n},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:e,9:4,14:n},{1:[2,2]},{4:16,5:l,7:12,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{11:29,12:[1,30],17:U},t([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:l,7:33,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:34,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:35,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:36,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{4:16,5:l,7:37,8:i,9:4,14:n,18:13,19:14,20:15,21:18,27:20,35:a,36:s,37:r,38:o,39:c,40:d,48:u,66:h,67:m},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},t(p,[2,23]),t(p,[2,24]),t(p,[2,25]),t(p,[2,26]),t(p,[2,27]),t(p,[2,28]),t(F,[2,52]),t(F,[2,53]),t(b,[2,4]),{13:46,16:[1,47]},t(b,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:Z,60:N,61:R,62:S,63:W,64:V,65:Q},{56:58,59:Z,60:N,61:R,62:S,63:W,64:V,65:Q},{11:59,17:U},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},t(y,[2,43]),t(y,[2,44]),t(y,[2,45]),t(y,[2,46]),t(y,[2,47]),t(y,[2,48]),t(y,[2,49]),{58:[1,63]},t(b,[2,5]),{5:T,24:64,25:M,28:g,30:E,32:G,34:B},{5:J,34:k,50:71,51:Y,53:C},{27:76,66:h,67:m},{27:77,66:h,67:m},t(X,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:T,24:82,25:M,28:g,30:E,32:G,34:B},t(X,[2,22]),t(X,[2,36]),{26:[1,83]},{26:[1,84]},{5:J,34:k,50:85,51:Y,53:C},t(X,[2,40]),t(X,[2,41]),t(X,[2,42]),{27:86,66:h,67:m},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},t(X,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},t(X,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:T,24:111,25:M,28:g,30:E,32:G,34:B},{5:T,24:112,25:M,28:g,30:E,32:G,34:B},{5:T,24:113,25:M,28:g,30:E,32:G,34:B},{5:T,24:114,25:M,28:g,30:E,32:G,34:B},{5:J,34:k,50:115,51:Y,53:C},{5:J,34:k,50:116,51:Y,53:C},t(X,[2,17]),t(X,[2,18]),t(X,[2,19]),t(X,[2,20]),t(X,[2,37]),t(X,[2,38])],defaultActions:{5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},D={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),14;case 1:return this.begin("type_directive"),15;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),17;case 4:return 16;case 5:return 5;case 6:case 7:case 8:break;case 9:return 8;case 10:return 6;case 11:return 23;case 12:return 34;case 13:return 26;case 14:return 25;case 15:return 28;case 16:return 30;case 17:return 32;case 18:return 35;case 19:return 36;case 20:return 37;case 21:return 38;case 22:return 39;case 23:return 40;case 24:return 41;case 25:return 42;case 26:return 43;case 27:return 44;case 28:return 45;case 29:return 46;case 30:return 47;case 31:return 48;case 32:return 59;case 33:return 60;case 34:return 61;case 35:return 62;case 36:return 63;case 37:return 64;case 38:return 65;case 39:return 51;case 40:return 53;case 41:return 55;case 42:return 58;case 43:return 57;case 44:this.begin("string");break;case 45:this.popState();break;case 46:return"qString";case 47:return e.yytext=e.yytext.trim(),66}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[45,46],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],inclusive:!0}}};function f(){this.yy={}}return I.lexer=D,f.prototype=I,I.Parser=f,new f}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(8800).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6876:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,3],l=[1,5],i=[1,7],a=[2,5],s=[1,15],r=[1,17],o=[1,18],c=[1,19],d=[1,21],u=[1,22],h=[1,23],m=[1,29],U=[1,30],p=[1,31],F=[1,32],b=[1,33],Z=[1,34],N=[1,37],R=[1,38],S=[1,39],W=[1,40],V=[1,41],Q=[1,42],y=[1,45],T=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],M=[1,58],g=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],E=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],G=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],B=[55,56,57],J=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],k={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,":":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,participant_actor:20,signal:21,autonumber:22,activate:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,text2:31,loop:32,end:33,rect:34,opt:35,alt:36,else_sections:37,par:38,par_sections:39,and:40,else:41,note:42,placement:43,over:44,actor_pair:45,links:46,link:47,properties:48,details:49,spaceList:50,",":51,left_of:52,right_of:53,signaltype:54,"+":55,"-":56,ACTOR:57,SOLID_OPEN_ARROW:58,DOTTED_OPEN_ARROW:59,SOLID_ARROW:60,DOTTED_ARROW:61,SOLID_CROSS:62,DOTTED_CROSS:63,SOLID_POINT:64,DOTTED_POINT:65,TXT:66,open_directive:67,type_directive:68,arg_directive:69,close_directive:70,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",20:"participant_actor",22:"autonumber",23:"activate",24:"deactivate",30:"title",32:"loop",33:"end",34:"rect",35:"opt",36:"alt",38:"par",40:"and",41:"else",42:"note",44:"over",46:"links",47:"link",48:"properties",49:"details",51:",",52:"left_of",53:"right_of",55:"+",56:"-",57:"ACTOR",58:"SOLID_OPEN_ARROW",59:"DOTTED_OPEN_ARROW",60:"SOLID_ARROW",61:"DOTTED_ARROW",62:"SOLID_CROSS",63:"DOTTED_CROSS",64:"SOLID_POINT",65:"DOTTED_POINT",66:"TXT",67:"open_directive",68:"type_directive",69:"arg_directive",70:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:return l.apply(a[r]),a[r];case 5:case 9:this.$=[];break;case 6:a[r-1].push(a[r]),this.$=a[r-1];break;case 7:case 8:case 45:this.$=a[r];break;case 12:a[r-3].type="addParticipant",a[r-3].description=l.parseMessage(a[r-1]),this.$=a[r-3];break;case 13:a[r-1].type="addParticipant",this.$=a[r-1];break;case 14:a[r-3].type="addActor",a[r-3].description=l.parseMessage(a[r-1]),this.$=a[r-3];break;case 15:a[r-1].type="addActor",this.$=a[r-1];break;case 17:l.enableSequenceNumbers();break;case 18:this.$={type:"activeStart",signalType:l.LINETYPE.ACTIVE_START,actor:a[r-1]};break;case 19:this.$={type:"activeEnd",signalType:l.LINETYPE.ACTIVE_END,actor:a[r-1]};break;case 25:this.$=[{type:"setTitle",text:a[r-1]}];break;case 26:a[r-1].unshift({type:"loopStart",loopText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.LOOP_START}),a[r-1].push({type:"loopEnd",loopText:a[r-2],signalType:l.LINETYPE.LOOP_END}),this.$=a[r-1];break;case 27:a[r-1].unshift({type:"rectStart",color:l.parseMessage(a[r-2]),signalType:l.LINETYPE.RECT_START}),a[r-1].push({type:"rectEnd",color:l.parseMessage(a[r-2]),signalType:l.LINETYPE.RECT_END}),this.$=a[r-1];break;case 28:a[r-1].unshift({type:"optStart",optText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.OPT_START}),a[r-1].push({type:"optEnd",optText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.OPT_END}),this.$=a[r-1];break;case 29:a[r-1].unshift({type:"altStart",altText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.ALT_START}),a[r-1].push({type:"altEnd",signalType:l.LINETYPE.ALT_END}),this.$=a[r-1];break;case 30:a[r-1].unshift({type:"parStart",parText:l.parseMessage(a[r-2]),signalType:l.LINETYPE.PAR_START}),a[r-1].push({type:"parEnd",signalType:l.LINETYPE.PAR_END}),this.$=a[r-1];break;case 33:this.$=a[r-3].concat([{type:"and",parText:l.parseMessage(a[r-1]),signalType:l.LINETYPE.PAR_AND},a[r]]);break;case 35:this.$=a[r-3].concat([{type:"else",altText:l.parseMessage(a[r-1]),signalType:l.LINETYPE.ALT_ELSE},a[r]]);break;case 36:this.$=[a[r-1],{type:"addNote",placement:a[r-2],actor:a[r-1].actor,text:a[r]}];break;case 37:a[r-2]=[].concat(a[r-1],a[r-1]).slice(0,2),a[r-2][0]=a[r-2][0].actor,a[r-2][1]=a[r-2][1].actor,this.$=[a[r-1],{type:"addNote",placement:l.PLACEMENT.OVER,actor:a[r-2].slice(0,2),text:a[r]}];break;case 38:this.$=[a[r-1],{type:"addLinks",actor:a[r-1].actor,text:a[r]}];break;case 39:this.$=[a[r-1],{type:"addALink",actor:a[r-1].actor,text:a[r]}];break;case 40:this.$=[a[r-1],{type:"addProperties",actor:a[r-1].actor,text:a[r]}];break;case 41:this.$=[a[r-1],{type:"addDetails",actor:a[r-1].actor,text:a[r]}];break;case 44:this.$=[a[r-2],a[r]];break;case 46:this.$=l.PLACEMENT.LEFTOF;break;case 47:this.$=l.PLACEMENT.RIGHTOF;break;case 48:this.$=[a[r-4],a[r-1],{type:"addMessage",from:a[r-4].actor,to:a[r-1].actor,signalType:a[r-3],msg:a[r]},{type:"activeStart",signalType:l.LINETYPE.ACTIVE_START,actor:a[r-1]}];break;case 49:this.$=[a[r-4],a[r-1],{type:"addMessage",from:a[r-4].actor,to:a[r-1].actor,signalType:a[r-3],msg:a[r]},{type:"activeEnd",signalType:l.LINETYPE.ACTIVE_END,actor:a[r-4]}];break;case 50:this.$=[a[r-3],a[r-1],{type:"addMessage",from:a[r-3].actor,to:a[r-1].actor,signalType:a[r-2],msg:a[r]}];break;case 51:this.$={type:"addParticipant",actor:a[r]};break;case 52:this.$=l.LINETYPE.SOLID_OPEN;break;case 53:this.$=l.LINETYPE.DOTTED_OPEN;break;case 54:this.$=l.LINETYPE.SOLID;break;case 55:this.$=l.LINETYPE.DOTTED;break;case 56:this.$=l.LINETYPE.SOLID_CROSS;break;case 57:this.$=l.LINETYPE.DOTTED_CROSS;break;case 58:this.$=l.LINETYPE.SOLID_POINT;break;case 59:this.$=l.LINETYPE.DOTTED_POINT;break;case 60:this.$=l.parseMessage(a[r].trim().substring(1));break;case 61:l.parseDirective("%%{","open_directive");break;case 62:l.parseDirective(a[r],"type_directive");break;case 63:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 64:l.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:l,11:6,67:i},{1:[3]},{3:8,4:e,5:n,6:4,7:l,11:6,67:i},{3:9,4:e,5:n,6:4,7:l,11:6,67:i},{3:10,4:e,5:n,6:4,7:l,11:6,67:i},t([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],a,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{13:43,14:[1,44],70:y},t([14,70],[2,62]),t(T,[2,6]),{6:35,10:46,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},t(T,[2,8]),t(T,[2,9]),{17:47,57:Q},{17:48,57:Q},{5:[1,49]},t(T,[2,17]),{17:50,57:Q},{17:51,57:Q},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:M},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},t(T,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:Q},{17:78,57:Q},{17:79,57:Q},{17:80,57:Q},t([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},t(T,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},t(T,[2,16]),{5:[1,88]},{5:[1,89]},t(T,[2,20]),t(T,[2,21]),t(T,[2,22]),t(T,[2,23]),t(T,[2,24]),{5:[1,90]},{5:[2,60]},t(g,a,{8:91}),t(g,a,{8:92}),t(g,a,{8:93}),t(E,a,{37:94,8:95}),t(G,a,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:Q},t(B,[2,52]),t(B,[2,53]),t(B,[2,54]),t(B,[2,55]),t(B,[2,56]),t(B,[2,57]),t(B,[2,58]),t(B,[2,59]),{17:101,57:Q},{17:103,45:102,57:Q},{57:[2,46]},{57:[2,47]},{31:104,66:M},{31:105,66:M},{31:106,66:M},{31:107,66:M},t(J,[2,10]),{13:108,70:y},{70:[2,63]},{19:[1,109]},t(T,[2,13]),{19:[1,110]},t(T,[2,15]),t(T,[2,18]),t(T,[2,19]),t(T,[2,25]),{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,111],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,112],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[1,113],34:p,35:F,36:b,38:Z,42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{33:[1,114]},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[2,34],34:p,35:F,36:b,38:Z,41:[1,115],42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{33:[1,116]},{4:s,5:r,6:35,9:14,10:16,11:6,16:o,17:36,20:c,21:20,22:d,23:u,24:h,25:24,26:25,27:26,28:27,29:28,30:m,32:U,33:[2,32],34:p,35:F,36:b,38:Z,40:[1,117],42:N,46:R,47:S,48:W,49:V,57:Q,67:i},{17:118,57:Q},{17:119,57:Q},{31:120,66:M},{31:121,66:M},{31:122,66:M},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},t(T,[2,26]),t(T,[2,27]),t(T,[2,28]),t(T,[2,29]),{19:[1,127]},t(T,[2,30]),{19:[1,128]},{31:129,66:M},{31:130,66:M},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:Q},t(J,[2,11]),t(T,[2,12]),t(T,[2,14]),t(E,a,{8:95,37:132}),t(G,a,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],defaultActions:{7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},Y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),67;case 1:return this.begin("type_directive"),68;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),70;case 4:return 69;case 5:case 39:case 52:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return this.begin("ID"),20;case 13:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),57;case 14:return this.popState(),this.popState(),this.begin("LINE"),18;case 15:return this.popState(),this.popState(),5;case 16:return this.begin("LINE"),32;case 17:return this.begin("LINE"),34;case 18:return this.begin("LINE"),35;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),38;case 22:return this.begin("LINE"),40;case 23:return this.popState(),19;case 24:return 33;case 25:return 52;case 26:return 53;case 27:return 46;case 28:return 47;case 29:return 48;case 30:return 49;case 31:return 44;case 32:return 42;case 33:return this.begin("ID"),23;case 34:return this.begin("ID"),24;case 35:return 30;case 36:return 7;case 37:return 22;case 38:return 51;case 40:return e.yytext=e.yytext.trim(),57;case 41:return 60;case 42:return 61;case 43:return 58;case 44:return 59;case 45:return 62;case 46:return 63;case 47:return 64;case 48:return 65;case 49:return 66;case 50:return 55;case 51:return 56;case 53:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,13],inclusive:!1},ALIAS:{rules:[7,8,14,15],inclusive:!1},LINE:{rules:[7,8,23],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function C(){this.yy={}}return k.lexer=Y,C.prototype=k,k.Parser=C,new C}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(1993).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3584:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,3],l=[1,5],i=[1,7],a=[2,5],s=[1,15],r=[1,17],o=[1,19],c=[1,20],d=[1,21],u=[1,22],h=[1,30],m=[1,23],U=[1,24],p=[1,25],F=[1,26],b=[1,27],Z=[1,32],N=[1,33],R=[1,34],S=[1,35],W=[1,31],V=[1,38],Q=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],y=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],T=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],M=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],g={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CHOICE:25,CONCURRENT:26,note:27,notePosition:28,NOTE_TEXT:29,direction:30,openDirective:31,typeDirective:32,closeDirective:33,":":34,argDirective:35,direction_tb:36,direction_bt:37,direction_rl:38,direction_lr:39,eol:40,";":41,EDGE_STATE:42,left_of:43,right_of:44,open_directive:45,type_directive:46,arg_directive:47,close_directive:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CHOICE",26:"CONCURRENT",27:"note",29:"NOTE_TEXT",34:":",36:"direction_tb",37:"direction_bt",38:"direction_rl",39:"direction_lr",41:";",42:"EDGE_STATE",43:"left_of",44:"right_of",45:"open_directive",46:"type_directive",47:"arg_directive",48:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 4:return l.setRootDoc(a[r]),a[r];case 5:this.$=[];break;case 6:"nl"!=a[r]&&(a[r-1].push(a[r]),this.$=a[r-1]);break;case 7:case 8:case 36:case 37:this.$=a[r];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[r],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[r-1],type:"default",description:l.trimColon(a[r])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[r-2],type:"default",description:""},state2:{stmt:"state",id:a[r],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[r-3],type:"default",description:""},state2:{stmt:"state",id:a[r-1],type:"default",description:""},description:a[r].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[r-3],type:"default",description:"",doc:a[r-1]};break;case 18:var o=a[r],c=a[r-2].trim();if(a[r].match(":")){var d=a[r].split(":");o=d[0],c=[c,d[1]]}this.$={stmt:"state",id:o,type:"default",description:c};break;case 19:this.$={stmt:"state",id:a[r-3],type:"default",description:a[r-5],doc:a[r-1]};break;case 20:this.$={stmt:"state",id:a[r],type:"fork"};break;case 21:this.$={stmt:"state",id:a[r],type:"join"};break;case 22:this.$={stmt:"state",id:a[r],type:"choice"};break;case 23:this.$={stmt:"state",id:l.getDividerId(),type:"divider"};break;case 24:this.$={stmt:"state",id:a[r-1].trim(),note:{position:a[r-2].trim(),text:a[r].trim()}};break;case 30:l.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 31:l.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 32:l.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 33:l.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:l.parseDirective("%%{","open_directive");break;case 41:l.parseDirective(a[r],"type_directive");break;case 42:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 43:l.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:l,31:6,45:i},{1:[3]},{3:8,4:e,5:n,6:4,7:l,31:6,45:i},{3:9,4:e,5:n,6:4,7:l,31:6,45:i},{3:10,4:e,5:n,6:4,7:l,31:6,45:i},t([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],a,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},{33:36,34:[1,37],48:V},t([34,48],[2,41]),t(Q,[2,6]),{6:28,10:39,11:18,14:o,15:c,17:d,20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,8]),t(Q,[2,9]),t(Q,[2,10],{12:[1,40],13:[1,41]}),t(Q,[2,14]),{16:[1,42]},t(Q,[2,16],{18:[1,43]}),{21:[1,44]},t(Q,[2,20]),t(Q,[2,21]),t(Q,[2,22]),t(Q,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},t(Q,[2,26]),t(Q,[2,27]),t(y,[2,36]),t(y,[2,37]),t(Q,[2,30]),t(Q,[2,31]),t(Q,[2,32]),t(Q,[2,33]),t(T,[2,28]),{35:49,47:[1,50]},t(T,[2,43]),t(Q,[2,7]),t(Q,[2,11]),{11:51,22:h,42:W},t(Q,[2,15]),t(M,a,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:V},{48:[2,42]},t(Q,[2,12],{12:[1,57]}),{4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,19:[1,58],20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},t(T,[2,29]),t(Q,[2,13]),t(Q,[2,17]),t(M,a,{8:62}),t(Q,[2,24]),t(Q,[2,25]),{4:s,5:r,6:28,9:14,10:16,11:18,14:o,15:c,17:d,19:[1,63],20:u,22:h,23:m,24:U,25:p,26:F,27:b,30:29,31:6,36:Z,37:N,38:R,39:S,42:W,45:i},t(Q,[2,19])],defaultActions:{7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},E={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:case 26:return 36;case 1:case 27:return 37;case 2:case 28:return 38;case 3:case 29:return 39;case 4:return this.begin("open_directive"),45;case 5:return this.begin("type_directive"),46;case 6:return this.popState(),this.begin("arg_directive"),34;case 7:return this.popState(),this.popState(),48;case 8:return 47;case 9:case 10:case 12:case 13:case 14:case 15:case 39:case 45:break;case 11:case 59:return 5;case 16:return this.pushState("SCALE"),15;case 17:return 16;case 18:case 33:case 36:this.popState();break;case 19:this.pushState("STATE");break;case 20:case 23:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 21:case 24:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 22:case 25:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),25;case 30:this.begin("STATE_STRING");break;case 31:return this.popState(),this.pushState("STATE_ID"),"AS";case 32:case 47:return this.popState(),"ID";case 34:return"STATE_DESCR";case 35:return 17;case 37:return this.popState(),this.pushState("struct"),18;case 38:return this.popState(),19;case 40:return this.begin("NOTE"),27;case 41:return this.popState(),this.pushState("NOTE_ID"),43;case 42:return this.popState(),this.pushState("NOTE_ID"),44;case 43:this.popState(),this.pushState("FLOATING_NOTE");break;case 44:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 46:return"NOTE_TEXT";case 48:return this.popState(),this.pushState("NOTE_TEXT"),22;case 49:return this.popState(),e.yytext=e.yytext.substr(2).trim(),29;case 50:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),29;case 51:case 52:return 7;case 53:return 14;case 54:return 42;case 55:return 22;case 56:return e.yytext=e.yytext.trim(),12;case 57:return 13;case 58:return 26;case 60:return"INVALID"}},rules:[/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[13,14],inclusive:!1},close_directive:{rules:[13,14],inclusive:!1},arg_directive:{rules:[7,8,13,14],inclusive:!1},type_directive:{rules:[6,7,13,14],inclusive:!1},open_directive:{rules:[5,13,14],inclusive:!1},struct:{rules:[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],inclusive:!1},FLOATING_NOTE_ID:{rules:[47],inclusive:!1},FLOATING_NOTE:{rules:[44,45,46],inclusive:!1},NOTE_TEXT:{rules:[49,50],inclusive:!1},NOTE_ID:{rules:[48],inclusive:!1},NOTE:{rules:[41,42,43],inclusive:!1},SCALE:{rules:[17,18],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[32],inclusive:!1},STATE_STRING:{rules:[33,34],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[13,14,20,21,22,23,24,25,30,31,35,36,37],inclusive:!1},ID:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],inclusive:!0}}};function G(){this.yy={}}return g.lexer=E,G.prototype=g,g.Parser=G,new G}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(3069).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9763:(t,e,n)=>{t=n.nmd(t);var l=function(){var t=function(t,e,n,l){for(n=n||{},l=t.length;l--;n[t[l]]=e);return n},e=[1,2],n=[1,5],l=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],s=[1,17],r=[1,21],o=[4,6,9,11,17,18,19,21],c={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,l,i,a,s){var r=a.length-1;switch(i){case 1:return a[r-1];case 3:case 7:case 8:this.$=[];break;case 4:a[r-1].push(a[r]),this.$=a[r-1];break;case 5:case 6:this.$=a[r];break;case 11:l.setTitle(a[r].substr(6)),this.$=a[r].substr(6);break;case 12:l.addSection(a[r].substr(8)),this.$=a[r].substr(8);break;case 13:l.addTask(a[r-1],a[r]),this.$="task";break;case 15:l.parseDirective("%%{","open_directive");break;case 16:l.parseDirective(a[r],"type_directive");break;case 17:a[r]=a[r].trim().replace(/'/g,'"'),l.parseDirective(a[r],"arg_directive");break;case 18:l.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(l,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:s,21:n},{1:[2,2]},{14:19,15:[1,20],24:r},t([15,24],[2,16]),t(l,[2,8],{1:[2,1]}),t(l,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:s,21:n},t(l,[2,6]),t(l,[2,7]),t(l,[2,11]),t(l,[2,12]),{20:[1,23]},t(l,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(l,[2,5]),t(l,[2,13]),t(o,[2,9]),{14:27,24:r},{24:[2,17]},{11:[1,28]},t(o,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],l=[],i=[null],a=[],s=this.table,r="",o=0,c=0,d=0,u=2,h=1,m=a.slice.call(arguments,1),U=Object.create(this.lexer),p={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(p.yy[F]=this.yy[F]);U.setInput(t,p.yy),p.yy.lexer=U,p.yy.parser=this,void 0===U.yylloc&&(U.yylloc={});var b=U.yylloc;a.push(b);var Z=U.options&&U.options.ranges;function N(){var t;return"number"!=typeof(t=l.pop()||U.lex()||h)&&(t instanceof Array&&(t=(l=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var R,S,W,V,Q,y,T,M,g,E={};;){if(W=n[n.length-1],this.defaultActions[W]?V=this.defaultActions[W]:(null==R&&(R=N()),V=s[W]&&s[W][R]),void 0===V||!V.length||!V[0]){var G="";for(y in g=[],s[W])this.terminals_[y]&&y>u&&g.push("'"+this.terminals_[y]+"'");G=U.showPosition?"Parse error on line "+(o+1)+":\n"+U.showPosition()+"\nExpecting "+g.join(", ")+", got '"+(this.terminals_[R]||R)+"'":"Parse error on line "+(o+1)+": Unexpected "+(R==h?"end of input":"'"+(this.terminals_[R]||R)+"'"),this.parseError(G,{text:U.match,token:this.terminals_[R]||R,line:U.yylineno,loc:b,expected:g})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+R);switch(V[0]){case 1:n.push(R),i.push(U.yytext),a.push(U.yylloc),n.push(V[1]),R=null,S?(R=S,S=null):(c=U.yyleng,r=U.yytext,o=U.yylineno,b=U.yylloc,d>0&&d--);break;case 2:if(T=this.productions_[V[1]][1],E.$=i[i.length-T],E._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},Z&&(E._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(Q=this.performAction.apply(E,[r,c,o,p.yy,V[1],i,a].concat(m))))return Q;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[V[1]][0]),i.push(E.$),a.push(E._$),M=s[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===l.length?this.yylloc.first_column:0)+l[l.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,l,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(l=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=l.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:l?l[l.length-1].length-l[l.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,l;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,l=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[l]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,l){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function u(){this.yy={}}return c.lexer=d,u.prototype=c,c.Parser=u,new u}();e.parser=l,e.Parser=l.Parser,e.parse=function(){return l.parse.apply(l,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var l=n(9143).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(l)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9609:t=>{var e=/^(%20|\s)*(javascript|data)/im,n=/[^\x20-\x7E]/gim,l=/^([^:]+):/gm,i=[".","/"];t.exports={sanitizeUrl:function(t){if(!t)return"about:blank";var a,s,r=t.replace(n,"").trim();return function(t){return i.indexOf(t[0])>-1}(r)?r:(s=r.match(l))?(a=s[0],e.test(a)?"about:blank":r):"about:blank"}}},3841:t=>{t.exports=function(t,e){return t.intersect(e)}},7458:(t,e,n)=>{n.d(e,{Z:()=>uT});var l=n(1941),i=n.n(l),a={debug:1,info:2,warn:3,error:4,fatal:5},s={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==a[t]&&(t=a[t])),s.trace=function(){},s.debug=function(){},s.info=function(){},s.warn=function(){},s.error=function(){},s.fatal=function(){},t<=a.fatal&&(s.fatal=console.error?console.error.bind(console,o("FATAL"),"color: orange"):console.log.bind(console,"",o("FATAL"))),t<=a.error&&(s.error=console.error?console.error.bind(console,o("ERROR"),"color: orange"):console.log.bind(console,"",o("ERROR"))),t<=a.warn&&(s.warn=console.warn?console.warn.bind(console,o("WARN"),"color: orange"):console.log.bind(console,"",o("WARN"))),t<=a.info&&(s.info=console.info?console.info.bind(console,o("INFO"),"color: lightblue"):console.log.bind(console,"",o("INFO"))),t<=a.debug&&(s.debug=console.debug?console.debug.bind(console,o("DEBUG"),"color: lightgreen"):console.log.bind(console,"",o("DEBUG")))},o=function(t){var e=i()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")};function c(t,e){let n;if(void 0===e)for(const l of t)null!=l&&(n=l)&&(n=l);else{let l=-1;for(let i of t)null!=(i=e(i,++l,t))&&(n=i)&&(n=i)}return n}function d(t,e){let n;if(void 0===e)for(const l of t)null!=l&&(n>l||void 0===n&&l>=l)&&(n=l);else{let l=-1;for(let i of t)null!=(i=e(i,++l,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function u(t){return t}var h=1e-6;function m(t){return"translate("+t+",0)"}function U(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function F(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function b(){return!this.__axis}function Z(t,e){var n=[],l=null,i=null,a=6,s=6,r=3,o="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,c=1===t||4===t?-1:1,d=4===t||2===t?"x":"y",Z=1===t||3===t?m:U;function N(m){var U=null==l?e.ticks?e.ticks.apply(e,n):e.domain():l,N=null==i?e.tickFormat?e.tickFormat.apply(e,n):u:i,R=Math.max(a,0)+r,S=e.range(),W=+S[0]+o,V=+S[S.length-1]+o,Q=(e.bandwidth?F:p)(e.copy(),o),y=m.selection?m.selection():m,T=y.selectAll(".domain").data([null]),M=y.selectAll(".tick").data(U,e).order(),g=M.exit(),E=M.enter().append("g").attr("class","tick"),G=M.select("line"),B=M.select("text");T=T.merge(T.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),M=M.merge(E),G=G.merge(E.append("line").attr("stroke","currentColor").attr(d+"2",c*a)),B=B.merge(E.append("text").attr("fill","currentColor").attr(d,c*R).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),m!==y&&(T=T.transition(m),M=M.transition(m),G=G.transition(m),B=B.transition(m),g=g.transition(m).attr("opacity",h).attr("transform",(function(t){return isFinite(t=Q(t))?Z(t+o):this.getAttribute("transform")})),E.attr("opacity",h).attr("transform",(function(t){var e=this.parentNode.__axis;return Z((e&&isFinite(e=e(t))?e:Q(t))+o)}))),g.remove(),T.attr("d",4===t||2===t?s?"M"+c*s+","+W+"H"+o+"V"+V+"H"+c*s:"M"+o+","+W+"V"+V:s?"M"+W+","+c*s+"V"+o+"H"+V+"V"+c*s:"M"+W+","+o+"H"+V),M.attr("opacity",1).attr("transform",(function(t){return Z(Q(t)+o)})),G.attr(d+"2",c*a),B.attr(d,c*R).text(N),y.filter(b).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),y.each((function(){this.__axis=Q}))}return N.scale=function(t){return arguments.length?(e=t,N):e},N.ticks=function(){return n=Array.from(arguments),N},N.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),N):n.slice()},N.tickValues=function(t){return arguments.length?(l=null==t?null:Array.from(t),N):l&&l.slice()},N.tickFormat=function(t){return arguments.length?(i=t,N):i},N.tickSize=function(t){return arguments.length?(a=s=+t,N):a},N.tickSizeInner=function(t){return arguments.length?(a=+t,N):a},N.tickSizeOuter=function(t){return arguments.length?(s=+t,N):s},N.tickPadding=function(t){return arguments.length?(r=+t,N):r},N.offset=function(t){return arguments.length?(o=+t,N):o},N}function N(){}function R(t){return null==t?N:function(){return this.querySelector(t)}}function S(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function W(){return[]}function V(t){return null==t?W:function(){return this.querySelectorAll(t)}}function Q(t){return function(){return this.matches(t)}}function y(t){return function(e){return e.matches(t)}}var T=Array.prototype.find;function M(){return this.firstElementChild}var g=Array.prototype.filter;function E(){return Array.from(this.children)}function G(t){return new Array(t.length)}function B(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function J(t){return function(){return t}}function k(t,e,n,l,i,a){for(var s,r=0,o=e.length,c=a.length;re?1:t>=e?0:NaN}B.prototype={constructor:B,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var D="http://www.w3.org/1999/xhtml";const f={svg:"http://www.w3.org/2000/svg",xhtml:D,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function L(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),f.hasOwnProperty(e)?{space:f[e],local:t}:t}function w(t){return function(){this.removeAttribute(t)}}function x(t){return function(){this.removeAttributeNS(t.space,t.local)}}function z(t,e){return function(){this.setAttribute(t,e)}}function v(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function O(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function _(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function K(t){return function(){this.style.removeProperty(t)}}function P(t,e,n){return function(){this.style.setProperty(t,e,n)}}function A(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function H(t,e){return t.style.getPropertyValue(e)||j(t).getComputedStyle(t,null).getPropertyValue(e)}function q(t){return function(){delete this[t]}}function $(t,e){return function(){this[t]=e}}function tt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function et(t){return t.trim().split(/^|\s+/)}function nt(t){return t.classList||new lt(t)}function lt(t){this._node=t,this._names=et(t.getAttribute("class")||"")}function it(t,e){for(var n=nt(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function yt(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Jt(){return new Bt([[document.documentElement]],Gt)}Bt.prototype=Jt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=R(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=I);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?K:"function"==typeof e?A:P)(t,e,null==n?"":n)):H(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?q:"function"==typeof e?tt:$)(t,e)):this.node()[t]},classed:function(t,e){var n=et(t+"");if(arguments.length<2){for(var l=nt(this.node()),i=-1,a=n.length;++i{}};function Ct(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Dt(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--zt}()}finally{zt=0,function(){for(var t,e,n=wt,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:wt=e);xt=t,le(l)}(),jt=0}}function ne(){var t=Pt.now(),e=t-_t;e>1e3&&(Kt-=e,_t=t)}function le(t){zt||(vt&&(vt=clearTimeout(vt)),t-jt>24?(t<1/0&&(vt=setTimeout(ee,t-Pt.now()-Kt)),Ot&&(Ot=clearInterval(Ot))):(Ot||(_t=Pt.now(),Ot=setInterval(ne,1e3)),zt=1,At(ee)))}function ie(t,e,n){var l=new $t;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}$t.prototype=te.prototype={constructor:$t,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Ht():+n)+(null==e?0:+e),this._next||xt===this||(xt?xt._next=this:wt=this,xt=this),this._call=t,this._time=n,le()},stop:function(){this._call&&(this._call=null,this._time=1/0,le())}};var ae=Lt("start","end","cancel","interrupt"),se=[];function re(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return ie(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function ce(t,e){var n=de(t,e);if(n.state>3)throw new Error("too late; already running");return n}function de(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ue(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var he,me=180/Math.PI,Ue={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function pe(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:ue(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:ue(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:ue(t,n)},{i:r-2,x:ue(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?xe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?xe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Be.exec(t))?new Oe(e[1],e[2],e[3],1):(e=Je.exec(t))?new Oe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=ke.exec(t))?xe(e[1],e[2],e[3],e[4]):(e=Ye.exec(t))?xe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ce.exec(t))?Pe(e[1],e[2]/100,e[3]/100,1):(e=Xe.exec(t))?Pe(e[1],e[2]/100,e[3]/100,e[4]):Ie.hasOwnProperty(t)?we(Ie[t]):"transparent"===t?new Oe(NaN,NaN,NaN,0):null}function we(t){return new Oe(t>>16&255,t>>8&255,255&t,1)}function xe(t,e,n,l){return l<=0&&(t=e=n=NaN),new Oe(t,e,n,l)}function ze(t){return t instanceof Qe||(t=Le(t)),t?new Oe((t=t.rgb()).r,t.g,t.b,t.opacity):new Oe}function ve(t,e,n,l){return 1===arguments.length?ze(t):new Oe(t,e,n,null==l?1:l)}function Oe(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function _e(){return"#"+Ke(this.r)+Ke(this.g)+Ke(this.b)}function je(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Ke(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Pe(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new He(t,e,n,l)}function Ae(t){if(t instanceof He)return new He(t.h,t.s,t.l,t.opacity);if(t instanceof Qe||(t=Le(t)),!t)return new He;if(t instanceof He)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new He(s,r,o,t.opacity)}function He(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function qe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function $e(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}We(Qe,Le,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:De,formatHex:De,formatHsl:function(){return Ae(this).formatHsl()},formatRgb:fe,toString:fe}),We(Oe,ve,Ve(Qe,{brighter:function(t){return t=null==t?Te:Math.pow(Te,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ye:Math.pow(ye,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_e,formatHex:_e,formatRgb:je,toString:je})),We(He,(function(t,e,n,l){return 1===arguments.length?Ae(t):new He(t,e,n,null==l?1:l)}),Ve(Qe,{brighter:function(t){return t=null==t?Te:Math.pow(Te,t),new He(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ye:Math.pow(ye,t),new He(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new Oe(qe(t>=240?t-240:t+120,i,l),qe(t,i,l),qe(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const tn=t=>()=>t;function en(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):tn(isNaN(t)?e:t)}const nn=function t(e){var n=function(t){return 1==(t=+t)?en:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=ve(t)).r,(e=ve(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=en(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function ln(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:ue(n,l)})),a=sn.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?oe:ce;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var yn=kt.prototype.constructor;function Tn(t){return function(){this.style.removeProperty(t)}}function Mn(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function gn(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&Mn(t,a,n)),l}return a._value=e,a}function En(t){return function(e){this.textContent=t.call(this,e)}}function Gn(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&En(l)),e}return l._value=t,l}var Bn=0;function Jn(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function kn(){return++Bn}var Yn=kt.prototype;Jn.prototype=function(t){return kt().transition(t)}.prototype={constructor:Jn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=R(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},kt.prototype.transition=function(t){var e,n;t instanceof Jn?(e=t._id,t=t._name):(e=kn(),(n=Cn).time=Ht(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;a>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?rl(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?rl(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=An.exec(t))?new dl(e[1],e[2],e[3],1):(e=Hn.exec(t))?new dl(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=qn.exec(t))?rl(e[1],e[2],e[3],e[4]):(e=$n.exec(t))?rl(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=tl.exec(t))?Ul(e[1],e[2]/100,e[3]/100,1):(e=el.exec(t))?Ul(e[1],e[2]/100,e[3]/100,e[4]):nl.hasOwnProperty(t)?sl(nl[t]):"transparent"===t?new dl(NaN,NaN,NaN,0):null}function sl(t){return new dl(t>>16&255,t>>8&255,255&t,1)}function rl(t,e,n,l){return l<=0&&(t=e=n=NaN),new dl(t,e,n,l)}function ol(t){return t instanceof zn||(t=al(t)),t?new dl((t=t.rgb()).r,t.g,t.b,t.opacity):new dl}function cl(t,e,n,l){return 1===arguments.length?ol(t):new dl(t,e,n,null==l?1:l)}function dl(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function ul(){return"#"+ml(this.r)+ml(this.g)+ml(this.b)}function hl(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function ml(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ul(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Fl(t,e,n,l)}function pl(t){if(t instanceof Fl)return new Fl(t.h,t.s,t.l,t.opacity);if(t instanceof zn||(t=al(t)),!t)return new Fl;if(t instanceof Fl)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new Fl(s,r,o,t.opacity)}function Fl(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function bl(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}wn(zn,al,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ll,formatHex:ll,formatHsl:function(){return pl(this).formatHsl()},formatRgb:il,toString:il}),wn(dl,cl,xn(zn,{brighter:function(t){return t=null==t?On:Math.pow(On,t),new dl(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?vn:Math.pow(vn,t),new dl(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ul,formatHex:ul,formatRgb:hl,toString:hl})),wn(Fl,(function(t,e,n,l){return 1===arguments.length?pl(t):new Fl(t,e,n,null==l?1:l)}),xn(zn,{brighter:function(t){return t=null==t?On:Math.pow(On,t),new Fl(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?vn:Math.pow(vn,t),new Fl(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new dl(bl(t>=240?t-240:t+120,i,l),bl(t,i,l),bl(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Zl=Math.PI/180,Nl=180/Math.PI,Rl=.96422,Sl=.82521,Wl=4/29,Vl=6/29,Ql=3*Vl*Vl;function yl(t){if(t instanceof Tl)return new Tl(t.l,t.a,t.b,t.opacity);if(t instanceof kl)return Yl(t);t instanceof dl||(t=ol(t));var e,n,l=Gl(t.r),i=Gl(t.g),a=Gl(t.b),s=Ml((.2225045*l+.7168786*i+.0606169*a)/1);return l===i&&i===a?e=n=s:(e=Ml((.4360747*l+.3850649*i+.1430804*a)/Rl),n=Ml((.0139322*l+.0971045*i+.7141733*a)/Sl)),new Tl(116*s-16,500*(e-s),200*(s-n),t.opacity)}function Tl(t,e,n,l){this.l=+t,this.a=+e,this.b=+n,this.opacity=+l}function Ml(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ql+Wl}function gl(t){return t>Vl?t*t*t:Ql*(t-Wl)}function El(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Gl(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Bl(t){if(t instanceof kl)return new kl(t.h,t.c,t.l,t.opacity);if(t instanceof Tl||(t=yl(t)),0===t.a&&0===t.b)return new kl(NaN,0()=>t;function Xl(t,e){return function(n){return t+n*e}}function Il(t,e){var n=e-t;return n?Xl(t,n):Cl(isNaN(t)?e:t)}function Dl(t){return function(e,n){var l=t((e=Jl(e)).h,(n=Jl(n)).h),i=Il(e.c,n.c),a=Il(e.l,n.l),s=Il(e.opacity,n.opacity);return function(t){return e.h=l(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const fl=Dl((function(t,e){var n=e-t;return n?Xl(t,n>180||n<-180?n-360*Math.round(n/360):n):Cl(isNaN(t)?e:t)}));Dl(Il);var Ll=Math.sqrt(50),wl=Math.sqrt(10),xl=Math.sqrt(2);function zl(t,e,n){var l=(e-t)/Math.max(0,n),i=Math.floor(Math.log(l)/Math.LN10),a=l/Math.pow(10,i);return i>=0?(a>=Ll?10:a>=wl?5:a>=xl?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Ll?10:a>=wl?5:a>=xl?2:1)}function vl(t,e,n){var l=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(l)/Math.LN10)),a=l/i;return a>=Ll?i*=10:a>=wl?i*=5:a>=xl&&(i*=2),ee?1:t>=e?0:NaN}function _l(t){let e=t,n=t,l=t;function i(t,e,i=0,a=t.length){if(i>>1;l(t[n],e)<0?i=n+1:a=n}while(it(e)-n,n=Ol,l=(e,n)=>Ol(t(e),n)),{left:i,center:function(t,n,l=0,a=t.length){const s=i(t,n,l,a-1);return s>l&&e(t[s-1],n)>-e(t[s],n)?s-1:s},right:function(t,e,i=0,a=t.length){if(i>>1;l(t[n],e)<=0?i=n+1:a=n}while(i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Fi(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Fi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ai.exec(t))?new Ni(e[1],e[2],e[3],1):(e=si.exec(t))?new Ni(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=ri.exec(t))?Fi(e[1],e[2],e[3],e[4]):(e=oi.exec(t))?Fi(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ci.exec(t))?Vi(e[1],e[2]/100,e[3]/100,1):(e=di.exec(t))?Vi(e[1],e[2]/100,e[3]/100,e[4]):ui.hasOwnProperty(t)?pi(ui[t]):"transparent"===t?new Ni(NaN,NaN,NaN,0):null}function pi(t){return new Ni(t>>16&255,t>>8&255,255&t,1)}function Fi(t,e,n,l){return l<=0&&(t=e=n=NaN),new Ni(t,e,n,l)}function bi(t){return t instanceof ql||(t=Ui(t)),t?new Ni((t=t.rgb()).r,t.g,t.b,t.opacity):new Ni}function Zi(t,e,n,l){return 1===arguments.length?bi(t):new Ni(t,e,n,null==l?1:l)}function Ni(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function Ri(){return"#"+Wi(this.r)+Wi(this.g)+Wi(this.b)}function Si(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Wi(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Vi(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yi(t,e,n,l)}function Qi(t){if(t instanceof yi)return new yi(t.h,t.s,t.l,t.opacity);if(t instanceof ql||(t=Ui(t)),!t)return new yi;if(t instanceof yi)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new yi(s,r,o,t.opacity)}function yi(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function Ti(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Mi(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}Al(ql,Ui,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:hi,formatHex:hi,formatHsl:function(){return Qi(this).formatHsl()},formatRgb:mi,toString:mi}),Al(Ni,Zi,Hl(ql,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new Ni(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?$l:Math.pow($l,t),new Ni(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ri,formatHex:Ri,formatRgb:Si,toString:Si})),Al(yi,(function(t,e,n,l){return 1===arguments.length?Qi(t):new yi(t,e,n,null==l?1:l)}),Hl(ql,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new yi(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?$l:Math.pow($l,t),new yi(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new Ni(Ti(t>=240?t-240:t+120,i,l),Ti(t,i,l),Ti(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const gi=t=>()=>t;function Ei(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):gi(isNaN(t)?e:t)}const Gi=function t(e){var n=function(t){return 1==(t=+t)?Ei:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):gi(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=Zi(t)).r,(e=Zi(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=Ei(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function Bi(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Yi(n,l)})),a=Ii.lastIndex;return ae&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),l=o>2?ji:_i,i=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(i||(i=l(s.map(t),r,o)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=l(r,s.map(t),Yi)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,xi),d()):s.slice()},u.range=function(t){return arguments.length?(r=Array.from(t),d()):r.slice()},u.rangeRound=function(t){return r=Array.from(t),o=wi,d()},u.clamp=function(t){return arguments.length?(c=!!t||vi,d()):c!==vi},u.interpolate=function(t){return arguments.length?(o=t,d()):o},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,l){return t=n,e=l,d()}}()(vi,vi)}function Ai(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Hi,qi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function $i(t){if(!(e=qi.exec(t)))throw new Error("invalid format: "+t);var e;return new ta({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function ta(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ea(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,l=t.slice(0,n);return[l.length>1?l[0]+l.slice(2):l,+t.slice(n+1)]}function na(t){return(t=ea(Math.abs(t)))?t[1]:NaN}function la(t,e){var n=ea(t,e);if(!n)return t+"";var l=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+l:l.length>i+1?l.slice(0,i+1)+"."+l.slice(i+1):l+new Array(i-l.length+2).join("0")}$i.prototype=ta.prototype,ta.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ia={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>la(100*t,e),r:la,s:function(t,e){var n=ea(t,e);if(!n)return t+"";var l=n[0],i=n[1],a=i-(Hi=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=l.length;return a===s?l:a>s?l+new Array(a-s+1).join("0"):a>0?l.slice(0,a)+"."+l.slice(a):"0."+new Array(1-a).join("0")+ea(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function aa(t){return t}var sa,ra,oa,ca=Array.prototype.map,da=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ua(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var l,i,a,s,r=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((l=e0){let n=Math.round(t/s),l=Math.round(e/s);for(n*se&&--l,a=new Array(i=l-n+1);++re&&--l,a=new Array(i=l-n+1);++r0;){if((i=zl(o,c,n))===l)return a[s]=o,a[r]=c,e(a);if(i>0)o=Math.floor(o/i)*i,c=Math.ceil(c/i)*i;else{if(!(i<0))break;o=Math.ceil(o*i)/i,c=Math.floor(c*i)/i}l=i}return t},t}function ha(){var t=Pi();return t.copy=function(){return Ki(t,ha())},Ai.apply(t,arguments),ua(t)}sa=function(t){var e,n,l=void 0===t.grouping||void 0===t.thousands?aa:(e=ca.call(t.grouping,Number),n=t.thousands+"",function(t,l){for(var i=t.length,a=[],s=0,r=e[0],o=0;i>0&&r>0&&(o+r+1>l&&(r=Math.max(1,l-o)),a.push(t.substring(i-=r,i+r)),!((o+=r+1)>l));)r=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",r=void 0===t.numerals?aa:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ca.call(t.numerals,String)),o=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",d=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=$i(t)).fill,n=t.align,u=t.sign,h=t.symbol,m=t.zero,U=t.width,p=t.comma,F=t.precision,b=t.trim,Z=t.type;"n"===Z?(p=!0,Z="g"):ia[Z]||(void 0===F&&(F=12),b=!0,Z="g"),(m||"0"===e&&"="===n)&&(m=!0,e="0",n="=");var N="$"===h?i:"#"===h&&/[boxX]/.test(Z)?"0"+Z.toLowerCase():"",R="$"===h?a:/[%p]/.test(Z)?o:"",S=ia[Z],W=/[defgprs%]/.test(Z);function V(t){var i,a,o,h=N,V=R;if("c"===Z)V=S(t)+V,t="";else{var Q=(t=+t)<0||1/t<0;if(t=isNaN(t)?d:S(Math.abs(t),F),b&&(t=function(t){t:for(var e,n=t.length,l=1,i=-1;l0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),Q&&0==+t&&"+"!==u&&(Q=!1),h=(Q?"("===u?u:c:"-"===u||"("===u?"":u)+h,V=("s"===Z?da[8+Hi/3]:"")+V+(Q&&"("===u?")":""),W)for(i=-1,a=t.length;++i(o=t.charCodeAt(i))||o>57){V=(46===o?s+t.slice(i+1):t.slice(i))+V,t=t.slice(0,i);break}}p&&!m&&(t=l(t,1/0));var y=h.length+t.length+V.length,T=y>1)+h+t+V+T.slice(y);break;default:t=T+h+t+V}return r(t)}return F=void 0===F?6:/[gprs]/.test(Z)?Math.max(1,Math.min(21,F)):Math.max(0,Math.min(20,F)),V.toString=function(){return t+""},V}return{format:u,formatPrefix:function(t,e){var n=u(((t=$i(t)).type="f",t)),l=3*Math.max(-8,Math.min(8,Math.floor(na(e)/3))),i=Math.pow(10,-l),a=da[8+l/3];return function(t){return n(i*t)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),ra=sa.format,oa=sa.formatPrefix;class ma extends Map{constructor(t,e=pa){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[n,l]of t)this.set(n,l)}get(t){return super.get(Ua(this,t))}has(t){return super.has(Ua(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const l=e(n);return t.has(l)?t.get(l):(t.set(l,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const l=e(n);return t.has(l)&&(n=t.get(l),t.delete(l)),n}(this,t))}}function Ua({_intern:t,_key:e},n){const l=e(n);return t.has(l)?t.get(l):n}function pa(t){return null!==t&&"object"==typeof t?t.valueOf():t}Set;const Fa=Symbol("implicit");function ba(){var t=new ma,e=[],n=[],l=Fa;function i(i){let a=t.get(i);if(void 0===a){if(l!==Fa)return l;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new ma;for(const l of n)t.has(l)||t.set(l,e.push(l)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(l=t,i):l},i.copy=function(){return ba(e,n).unknown(l)},Ai.apply(i,arguments),i}const Za=1e3,Na=6e4,Ra=36e5,Sa=864e5,Wa=6048e5,Va=31536e6;var Qa=new Date,ya=new Date;function Ta(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return Qa.setTime(+e),ya.setTime(+l),t(Qa),t(ya),Math.floor(n(Qa,ya))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Ma=Ta((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Ma.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ta((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Ma:null};const ga=Ma;Ma.range;var Ea=Ta((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*Za)}),(function(t,e){return(e-t)/Za}),(function(t){return t.getUTCSeconds()}));const Ga=Ea;Ea.range;var Ba=Ta((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Za)}),(function(t,e){t.setTime(+t+e*Na)}),(function(t,e){return(e-t)/Na}),(function(t){return t.getMinutes()}));const Ja=Ba;Ba.range;var ka=Ta((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*Za-t.getMinutes()*Na)}),(function(t,e){t.setTime(+t+e*Ra)}),(function(t,e){return(e-t)/Ra}),(function(t){return t.getHours()}));const Ya=ka;ka.range;var Ca=Ta((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Na)/Sa),(t=>t.getDate()-1));const Xa=Ca;function Ia(t){return Ta((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Na)/Wa}))}Ca.range;var Da=Ia(0),fa=Ia(1),La=Ia(2),wa=Ia(3),xa=Ia(4),za=Ia(5),va=Ia(6),Oa=(Da.range,fa.range,La.range,wa.range,xa.range,za.range,va.range,Ta((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})));const _a=Oa;Oa.range;var ja=Ta((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));ja.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ta((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Ka=ja;ja.range;var Pa=Ta((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*Na)}),(function(t,e){return(e-t)/Na}),(function(t){return t.getUTCMinutes()}));const Aa=Pa;Pa.range;var Ha=Ta((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*Ra)}),(function(t,e){return(e-t)/Ra}),(function(t){return t.getUTCHours()}));const qa=Ha;Ha.range;var $a=Ta((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/Sa}),(function(t){return t.getUTCDate()-1}));const ts=$a;function es(t){return Ta((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/Wa}))}$a.range;var ns=es(0),ls=es(1),is=es(2),as=es(3),ss=es(4),rs=es(5),os=es(6),cs=(ns.range,ls.range,is.range,as.range,ss.range,rs.range,os.range,Ta((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})));const ds=cs;cs.range;var us=Ta((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));us.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ta((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const hs=us;function ms(t,e,n,l,i,a){const s=[[Ga,1,Za],[Ga,5,5e3],[Ga,15,15e3],[Ga,30,3e4],[a,1,Na],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,Ra],[i,3,108e5],[i,6,216e5],[i,12,432e5],[l,1,Sa],[l,2,1728e5],[n,1,Wa],[e,1,2592e6],[e,3,7776e6],[t,1,Va]];function r(e,n,l){const i=Math.abs(n-e)/l,a=_l((([,,t])=>t)).right(s,i);if(a===s.length)return t.every(vl(e/Va,n/Va,l));if(0===a)return ga.every(Math.max(vl(e,n,l),1));const[r,o]=s[i/s[a-1][2][t.toLowerCase(),e])))}function Bs(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.w=+l[0],n+l[0].length):-1}function Js(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.u=+l[0],n+l[0].length):-1}function ks(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.U=+l[0],n+l[0].length):-1}function Ys(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.V=+l[0],n+l[0].length):-1}function Cs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.W=+l[0],n+l[0].length):-1}function Xs(t,e,n){var l=Qs.exec(e.slice(n,n+4));return l?(t.y=+l[0],n+l[0].length):-1}function Is(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.y=+l[0]+(+l[0]>68?1900:2e3),n+l[0].length):-1}function Ds(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function fs(t,e,n){var l=Qs.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function Ls(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function ws(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function xs(t,e,n){var l=Qs.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function zs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function vs(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function Os(t,e,n){var l=Qs.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function _s(t,e,n){var l=Qs.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function js(t,e,n){var l=Qs.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function Ks(t,e,n){var l=ys.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function Ps(t,e,n){var l=Qs.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function As(t,e,n){var l=Qs.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function Hs(t,e){return Ms(t.getDate(),e,2)}function qs(t,e){return Ms(t.getHours(),e,2)}function $s(t,e){return Ms(t.getHours()%12||12,e,2)}function tr(t,e){return Ms(1+Xa.count(Ka(t),t),e,3)}function er(t,e){return Ms(t.getMilliseconds(),e,3)}function nr(t,e){return er(t,e)+"000"}function lr(t,e){return Ms(t.getMonth()+1,e,2)}function ir(t,e){return Ms(t.getMinutes(),e,2)}function ar(t,e){return Ms(t.getSeconds(),e,2)}function sr(t){var e=t.getDay();return 0===e?7:e}function rr(t,e){return Ms(Da.count(Ka(t)-1,t),e,2)}function or(t){var e=t.getDay();return e>=4||0===e?xa(t):xa.ceil(t)}function cr(t,e){return t=or(t),Ms(xa.count(Ka(t),t)+(4===Ka(t).getDay()),e,2)}function dr(t){return t.getDay()}function ur(t,e){return Ms(fa.count(Ka(t)-1,t),e,2)}function hr(t,e){return Ms(t.getFullYear()%100,e,2)}function mr(t,e){return Ms((t=or(t)).getFullYear()%100,e,2)}function Ur(t,e){return Ms(t.getFullYear()%1e4,e,4)}function pr(t,e){var n=t.getDay();return Ms((t=n>=4||0===n?xa(t):xa.ceil(t)).getFullYear()%1e4,e,4)}function Fr(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ms(e/60|0,"0",2)+Ms(e%60,"0",2)}function br(t,e){return Ms(t.getUTCDate(),e,2)}function Zr(t,e){return Ms(t.getUTCHours(),e,2)}function Nr(t,e){return Ms(t.getUTCHours()%12||12,e,2)}function Rr(t,e){return Ms(1+ts.count(hs(t),t),e,3)}function Sr(t,e){return Ms(t.getUTCMilliseconds(),e,3)}function Wr(t,e){return Sr(t,e)+"000"}function Vr(t,e){return Ms(t.getUTCMonth()+1,e,2)}function Qr(t,e){return Ms(t.getUTCMinutes(),e,2)}function yr(t,e){return Ms(t.getUTCSeconds(),e,2)}function Tr(t){var e=t.getUTCDay();return 0===e?7:e}function Mr(t,e){return Ms(ns.count(hs(t)-1,t),e,2)}function gr(t){var e=t.getUTCDay();return e>=4||0===e?ss(t):ss.ceil(t)}function Er(t,e){return t=gr(t),Ms(ss.count(hs(t),t)+(4===hs(t).getUTCDay()),e,2)}function Gr(t){return t.getUTCDay()}function Br(t,e){return Ms(ls.count(hs(t)-1,t),e,2)}function Jr(t,e){return Ms(t.getUTCFullYear()%100,e,2)}function kr(t,e){return Ms((t=gr(t)).getUTCFullYear()%100,e,2)}function Yr(t,e){return Ms(t.getUTCFullYear()%1e4,e,4)}function Cr(t,e){var n=t.getUTCDay();return Ms((t=n>=4||0===n?ss(t):ss.ceil(t)).getUTCFullYear()%1e4,e,4)}function Xr(){return"+0000"}function Ir(){return"%"}function Dr(t){return+t}function fr(t){return Math.floor(+t/1e3)}function Lr(t){return new Date(t)}function wr(t){return t instanceof Date?+t:+new Date(+t)}function xr(t,e,n,l,i,a,s,r,o,c){var d=Pi(),u=d.invert,h=d.domain,m=c(".%L"),U=c(":%S"),p=c("%I:%M"),F=c("%I %p"),b=c("%a %d"),Z=c("%b %d"),N=c("%B"),R=c("%Y");function S(t){return(o(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Dr,s:fr,S:ar,u:sr,U:rr,V:cr,w:dr,W:ur,x:null,X:null,y:hr,Y:Ur,Z:Fr,"%":Ir},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:br,e:br,f:Wr,g:kr,G:Cr,H:Zr,I:Nr,j:Rr,L:Sr,m:Vr,M:Qr,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Dr,s:fr,S:yr,u:Tr,U:Mr,V:Er,w:Gr,W:Br,x:null,X:null,y:Jr,Y:Yr,Z:Xr,"%":Ir},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U.get(l[0].toLowerCase()),n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h.get(l[0].toLowerCase()),n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z.get(l[0].toLowerCase()),n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F.get(l[0].toLowerCase()),n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:ws,e:ws,f:js,g:Is,G:Xs,H:zs,I:zs,j:xs,L:_s,m:Ls,M:vs,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d.get(l[0].toLowerCase()),n+l[0].length):-1},q:fs,Q:Ps,s:As,S:Os,u:Js,U:ks,V:Ys,w:Bs,W:Cs,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:Is,Y:Xs,Z:Ds,"%":Ks};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=Ns(Rs(a.y,0,1))).getUTCDay(),l=i>4||0===i?ls.ceil(l):ls(l),l=ts.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=Zs(Rs(a.y,0,1))).getDay(),l=i>4||0===i?fa.ceil(l):fa(l),l=Xa.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Ns(Rs(a.y,0,1)).getUTCDay():Zs(Rs(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Ns(a)):Zs(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in Vs?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Ws=Ss.format,Ss.parse,Ss.utcFormat,Ss.utcParse;var Ar=Array.prototype.find;function Hr(){return this.firstElementChild}var qr=Array.prototype.filter;function $r(){return Array.from(this.children)}function to(t){return new Array(t.length)}function eo(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function no(t){return function(){return t}}function lo(t,e,n,l,i,a){for(var s,r=0,o=e.length,c=a.length;re?1:t>=e?0:NaN}eo.prototype={constructor:eo,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var oo="http://www.w3.org/1999/xhtml";const co={svg:"http://www.w3.org/2000/svg",xhtml:oo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function uo(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),co.hasOwnProperty(e)?{space:co[e],local:t}:t}function ho(t){return function(){this.removeAttribute(t)}}function mo(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Uo(t,e){return function(){this.setAttribute(t,e)}}function po(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Fo(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function bo(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Zo(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function No(t){return function(){this.style.removeProperty(t)}}function Ro(t,e,n){return function(){this.style.setProperty(t,e,n)}}function So(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function Wo(t,e){return t.style.getPropertyValue(e)||Zo(t).getComputedStyle(t,null).getPropertyValue(e)}function Vo(t){return function(){delete this[t]}}function Qo(t,e){return function(){this[t]=e}}function yo(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function To(t){return t.trim().split(/^|\s+/)}function Mo(t){return t.classList||new go(t)}function go(t){this._node=t,this._names=To(t.getAttribute("class")||"")}function Eo(t,e){for(var n=Mo(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Ao(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ec=[null];function nc(t,e){this._groups=t,this._parents=e}function lc(){return new nc([[document.documentElement]],ec)}nc.prototype=lc.prototype={constructor:nc,select:function(t){"function"!=typeof t&&(t=vr(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=ro);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?No:"function"==typeof e?So:Ro)(t,e,null==n?"":n)):Wo(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Vo:"function"==typeof e?yo:Qo)(t,e)):this.node()[t]},classed:function(t,e){var n=To(t+"");if(arguments.length<2){for(var l=Mo(this.node()),i=-1,a=n.length;++icc)if(Math.abs(d*r-o*c)>cc&&i){var h=n-a,m=l-s,U=r*r+o*o,p=h*h+m*m,F=Math.sqrt(U),b=Math.sqrt(u),Z=i*Math.tan((rc-Math.acos((U+u-p)/(2*F*b)))/2),N=Z/b,R=Z/F;Math.abs(N-1)>cc&&(this._+="L"+(t+N*c)+","+(e+N*d)),this._+="A"+i+","+i+",0,0,"+ +(d*h>c*m)+","+(this._x1=t+R*r)+","+(this._y1=e+R*o)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,l,i,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(l),r=n*Math.sin(l),o=t+s,c=e+r,d=1^a,u=a?l-i:i-l;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+o+","+c:(Math.abs(this._x1-o)>cc||Math.abs(this._y1-c)>cc)&&(this._+="L"+o+","+c),n&&(u<0&&(u=u%oc+oc),u>dc?this._+="A"+n+","+n+",0,1,"+d+","+(t-s)+","+(e-r)+"A"+n+","+n+",0,1,"+d+","+(this._x1=o)+","+(this._y1=c):u>cc&&(this._+="A"+n+","+n+",0,"+ +(u>=rc)+","+d+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +l+"h"+-n+"Z"},toString:function(){return this._}};const mc=hc;function Uc(t){return function(){return t}}var pc=Math.abs,Fc=Math.atan2,bc=Math.cos,Zc=Math.max,Nc=Math.min,Rc=Math.sin,Sc=Math.sqrt,Wc=1e-12,Vc=Math.PI,Qc=Vc/2,yc=2*Vc;function Tc(t){return t>1?0:t<-1?Vc:Math.acos(t)}function Mc(t){return t>=1?Qc:t<=-1?-Qc:Math.asin(t)}function gc(t){return t.innerRadius}function Ec(t){return t.outerRadius}function Gc(t){return t.startAngle}function Bc(t){return t.endAngle}function Jc(t){return t&&t.padAngle}function kc(t,e,n,l,i,a,s,r){var o=n-t,c=l-e,d=s-i,u=r-a,h=u*o-d*c;if(!(h*hG*G+B*B&&(Q=T,y=M),{cx:Q,cy:y,x01:-d,y01:-u,x11:Q*(i/S-1),y11:y*(i/S-1)}}function Cc(){var t=gc,e=Ec,n=Uc(0),l=null,i=Gc,a=Bc,s=Jc,r=null;function o(){var o,c,d=+t.apply(this,arguments),u=+e.apply(this,arguments),h=i.apply(this,arguments)-Qc,m=a.apply(this,arguments)-Qc,U=pc(m-h),p=m>h;if(r||(r=o=mc()),uWc)if(U>yc-Wc)r.moveTo(u*bc(h),u*Rc(h)),r.arc(0,0,u,h,m,!p),d>Wc&&(r.moveTo(d*bc(m),d*Rc(m)),r.arc(0,0,d,m,h,p));else{var F,b,Z=h,N=m,R=h,S=m,W=U,V=U,Q=s.apply(this,arguments)/2,y=Q>Wc&&(l?+l.apply(this,arguments):Sc(d*d+u*u)),T=Nc(pc(u-d)/2,+n.apply(this,arguments)),M=T,g=T;if(y>Wc){var E=Mc(y/d*Rc(Q)),G=Mc(y/u*Rc(Q));(W-=2*E)>Wc?(R+=E*=p?1:-1,S-=E):(W=0,R=S=(h+m)/2),(V-=2*G)>Wc?(Z+=G*=p?1:-1,N-=G):(V=0,Z=N=(h+m)/2)}var B=u*bc(Z),J=u*Rc(Z),k=d*bc(S),Y=d*Rc(S);if(T>Wc){var C,X=u*bc(N),I=u*Rc(N),D=d*bc(R),f=d*Rc(R);if(UWc?g>Wc?(F=Yc(D,f,B,J,u,g,p),b=Yc(X,I,k,Y,u,g,p),r.moveTo(F.cx+F.x01,F.cy+F.y01),gWc&&W>Wc?M>Wc?(F=Yc(k,Y,X,I,d,-M,p),b=Yc(B,J,D,f,d,-M,p),r.lineTo(F.cx+F.x01,F.cy+F.y01),Mt?1:e>=t?0:NaN}function zc(t){return t}function vc(){}function Oc(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function _c(t){this._context=t}function jc(t){return new _c(t)}function Kc(t){this._context=t}function Pc(t){this._context=t}function Ac(t){this._context=t}function Hc(t){return t<0?-1:1}function qc(t,e,n){var l=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(l||i<0&&-0),s=(n-t._y1)/(i||l<0&&-0),r=(a*i+s*l)/(l+i);return(Hc(a)+Hc(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(r))||0}function $c(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function td(t,e,n){var l=t._x0,i=t._y0,a=t._x1,s=t._y1,r=(a-l)/3;t._context.bezierCurveTo(l+r,i+r*e,a-r,s-r*n,a,s)}function ed(t){this._context=t}function nd(t){this._context=new ld(t)}function ld(t){this._context=t}function id(t){this._context=t}function ad(t){var e,n,l=t.length-1,i=new Array(l),a=new Array(l),s=new Array(l);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[l-1]=(t[l]+i[l-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var rd=new Date,od=new Date;function cd(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return rd.setTime(+e),od.setTime(+l),t(rd),t(od),Math.floor(n(rd,od))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}const dd=864e5,ud=6048e5;function hd(t){return cd((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/ud}))}var md=hd(0),Ud=hd(1),pd=hd(2),Fd=hd(3),bd=hd(4),Zd=hd(5),Nd=hd(6),Rd=(md.range,Ud.range,pd.range,Fd.range,bd.range,Zd.range,Nd.range,cd((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/dd}),(function(t){return t.getUTCDate()-1})));const Sd=Rd;function Wd(t){return cd((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/ud}))}Rd.range;var Vd=Wd(0),Qd=Wd(1),yd=Wd(2),Td=Wd(3),Md=Wd(4),gd=Wd(5),Ed=Wd(6),Gd=(Vd.range,Qd.range,yd.range,Td.range,Md.range,gd.range,Ed.range,cd((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/dd),(t=>t.getDate()-1)));const Bd=Gd;Gd.range;var Jd=cd((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Jd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cd((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const kd=Jd;Jd.range;var Yd=cd((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Yd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?cd((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Cd=Yd;function Xd(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Id(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Dd(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}Yd.range;var fd,Ld,wd={"-":"",_:" ",0:"0"},xd=/^\s*\d+/,zd=/^%/,vd=/[\\^$*+?|[\]().{}]/g;function Od(t,e,n){var l=t<0?"-":"",i=(l?-t:t)+"",a=i.length;return l+(a[t.toLowerCase(),e])))}function Pd(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.w=+l[0],n+l[0].length):-1}function Ad(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.u=+l[0],n+l[0].length):-1}function Hd(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.U=+l[0],n+l[0].length):-1}function qd(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.V=+l[0],n+l[0].length):-1}function $d(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.W=+l[0],n+l[0].length):-1}function tu(t,e,n){var l=xd.exec(e.slice(n,n+4));return l?(t.y=+l[0],n+l[0].length):-1}function eu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.y=+l[0]+(+l[0]>68?1900:2e3),n+l[0].length):-1}function nu(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function lu(t,e,n){var l=xd.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function iu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function au(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function su(t,e,n){var l=xd.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function ru(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function ou(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function cu(t,e,n){var l=xd.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function du(t,e,n){var l=xd.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function uu(t,e,n){var l=xd.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function hu(t,e,n){var l=zd.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function mu(t,e,n){var l=xd.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function Uu(t,e,n){var l=xd.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function pu(t,e){return Od(t.getDate(),e,2)}function Fu(t,e){return Od(t.getHours(),e,2)}function bu(t,e){return Od(t.getHours()%12||12,e,2)}function Zu(t,e){return Od(1+Bd.count(kd(t),t),e,3)}function Nu(t,e){return Od(t.getMilliseconds(),e,3)}function Ru(t,e){return Nu(t,e)+"000"}function Su(t,e){return Od(t.getMonth()+1,e,2)}function Wu(t,e){return Od(t.getMinutes(),e,2)}function Vu(t,e){return Od(t.getSeconds(),e,2)}function Qu(t){var e=t.getDay();return 0===e?7:e}function yu(t,e){return Od(Vd.count(kd(t)-1,t),e,2)}function Tu(t){var e=t.getDay();return e>=4||0===e?Md(t):Md.ceil(t)}function Mu(t,e){return t=Tu(t),Od(Md.count(kd(t),t)+(4===kd(t).getDay()),e,2)}function gu(t){return t.getDay()}function Eu(t,e){return Od(Qd.count(kd(t)-1,t),e,2)}function Gu(t,e){return Od(t.getFullYear()%100,e,2)}function Bu(t,e){return Od((t=Tu(t)).getFullYear()%100,e,2)}function Ju(t,e){return Od(t.getFullYear()%1e4,e,4)}function ku(t,e){var n=t.getDay();return Od((t=n>=4||0===n?Md(t):Md.ceil(t)).getFullYear()%1e4,e,4)}function Yu(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Od(e/60|0,"0",2)+Od(e%60,"0",2)}function Cu(t,e){return Od(t.getUTCDate(),e,2)}function Xu(t,e){return Od(t.getUTCHours(),e,2)}function Iu(t,e){return Od(t.getUTCHours()%12||12,e,2)}function Du(t,e){return Od(1+Sd.count(Cd(t),t),e,3)}function fu(t,e){return Od(t.getUTCMilliseconds(),e,3)}function Lu(t,e){return fu(t,e)+"000"}function wu(t,e){return Od(t.getUTCMonth()+1,e,2)}function xu(t,e){return Od(t.getUTCMinutes(),e,2)}function zu(t,e){return Od(t.getUTCSeconds(),e,2)}function vu(t){var e=t.getUTCDay();return 0===e?7:e}function Ou(t,e){return Od(md.count(Cd(t)-1,t),e,2)}function _u(t){var e=t.getUTCDay();return e>=4||0===e?bd(t):bd.ceil(t)}function ju(t,e){return t=_u(t),Od(bd.count(Cd(t),t)+(4===Cd(t).getUTCDay()),e,2)}function Ku(t){return t.getUTCDay()}function Pu(t,e){return Od(Ud.count(Cd(t)-1,t),e,2)}function Au(t,e){return Od(t.getUTCFullYear()%100,e,2)}function Hu(t,e){return Od((t=_u(t)).getUTCFullYear()%100,e,2)}function qu(t,e){return Od(t.getUTCFullYear()%1e4,e,4)}function $u(t,e){var n=t.getUTCDay();return Od((t=n>=4||0===n?bd(t):bd.ceil(t)).getUTCFullYear()%1e4,e,4)}function th(){return"+0000"}function eh(){return"%"}function nh(t){return+t}function lh(t){return Math.floor(+t/1e3)}fd=function(t){var e=t.dateTime,n=t.date,l=t.time,i=t.periods,a=t.days,s=t.shortDays,r=t.months,o=t.shortMonths,c=jd(i),d=Kd(i),u=jd(a),h=Kd(a),m=jd(s),U=Kd(s),p=jd(r),F=Kd(r),b=jd(o),Z=Kd(o),N={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return o[t.getMonth()]},B:function(t){return r[t.getMonth()]},c:null,d:pu,e:pu,f:Ru,g:Bu,G:ku,H:Fu,I:bu,j:Zu,L:Nu,m:Su,M:Wu,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nh,s:lh,S:Vu,u:Qu,U:yu,V:Mu,w:gu,W:Eu,x:null,X:null,y:Gu,Y:Ju,Z:Yu,"%":eh},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:Cu,e:Cu,f:Lu,g:Hu,G:$u,H:Xu,I:Iu,j:Du,L:fu,m:wu,M:xu,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nh,s:lh,S:zu,u:vu,U:Ou,V:ju,w:Ku,W:Pu,x:null,X:null,y:Au,Y:qu,Z:th,"%":eh},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U.get(l[0].toLowerCase()),n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h.get(l[0].toLowerCase()),n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z.get(l[0].toLowerCase()),n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F.get(l[0].toLowerCase()),n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:au,e:au,f:uu,g:eu,G:tu,H:ru,I:ru,j:su,L:du,m:iu,M:ou,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d.get(l[0].toLowerCase()),n+l[0].length):-1},q:lu,Q:mu,s:Uu,S:cu,u:Ad,U:Hd,V:qd,w:Pd,W:$d,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:eu,Y:tu,Z:nu,"%":hu};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=Id(Dd(a.y,0,1))).getUTCDay(),l=i>4||0===i?Ud.ceil(l):Ud(l),l=Sd.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=Xd(Dd(a.y,0,1))).getDay(),l=i>4||0===i?Qd.ceil(l):Qd(l),l=Bd.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Id(Dd(a.y,0,1)).getUTCDay():Xd(Dd(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Id(a)):Xd(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in wd?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Ld=fd.format,fd.parse,fd.utcFormat,fd.utcParse;var ih={value:()=>{}};function ah(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function oh(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--mh}()}finally{mh=0,function(){for(var t,e,n=uh,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:uh=e);hh=t,Mh(l)}(),bh=0}}function Th(){var t=Nh.now(),e=t-Fh;e>1e3&&(Zh-=e,Fh=t)}function Mh(t){mh||(Uh&&(Uh=clearTimeout(Uh)),t-bh>24?(t<1/0&&(Uh=setTimeout(yh,t-Nh.now()-Zh)),ph&&(ph=clearInterval(ph))):(ph||(Fh=Nh.now(),ph=setInterval(Th,1e3)),mh=1,Rh(yh)))}function gh(t,e,n){var l=new Vh;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}Vh.prototype=Qh.prototype={constructor:Vh,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Sh():+n)+(null==e?0:+e),this._next||hh===this||(hh?hh._next=this:uh=this,hh=this),this._call=t,this._time=n,Mh()},stop:function(){this._call&&(this._call=null,this._time=1/0,Mh())}};var Eh=dh("start","end","cancel","interrupt"),Gh=[];function Bh(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return gh(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function kh(t,e){var n=Yh(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Yh(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Ch(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Xh,Ih=180/Math.PI,Dh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fh(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Ch(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Ch(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Ch(t,n)},{i:r-2,x:Ch(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Ch(n,l)})),a=Ah.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Jh:kh;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var pm=ic.prototype.constructor;function Fm(t){return function(){this.style.removeProperty(t)}}function bm(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function Zm(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&bm(t,a,n)),l}return a._value=e,a}function Nm(t){return function(e){this.textContent=t.call(this,e)}}function Rm(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&Nm(l)),e}return l._value=t,l}var Sm=0;function Wm(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function Vm(){return++Sm}var Qm=ic.prototype;Wm.prototype=function(t){return ic().transition(t)}.prototype={constructor:Wm,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=vr(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},ic.prototype.transition=function(t){var e,n;t instanceof Wm?(e=t._id,t=t._name):(e=Vm(),(n=ym).time=Sh(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;ae?1:t>=e?0:NaN}fm.prototype={constructor:fm,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var _m="http://www.w3.org/1999/xhtml";const jm={svg:"http://www.w3.org/2000/svg",xhtml:_m,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Km(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),jm.hasOwnProperty(e)?{space:jm[e],local:t}:t}function Pm(t){return function(){this.removeAttribute(t)}}function Am(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Hm(t,e){return function(){this.setAttribute(t,e)}}function qm(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function $m(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function tU(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function eU(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function nU(t){return function(){this.style.removeProperty(t)}}function lU(t,e,n){return function(){this.style.setProperty(t,e,n)}}function iU(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function aU(t,e){return t.style.getPropertyValue(e)||eU(t).getComputedStyle(t,null).getPropertyValue(e)}function sU(t){return function(){delete this[t]}}function rU(t,e){return function(){this[t]=e}}function oU(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function cU(t){return t.trim().split(/^|\s+/)}function dU(t){return t.classList||new uU(t)}function uU(t){this._node=t,this._names=cU(t.getAttribute("class")||"")}function hU(t,e){for(var n=dU(t),l=-1,i=e.length;++l=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function kU(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var DU=[null];function fU(t,e){this._groups=t,this._parents=e}function LU(){return new fU([[document.documentElement]],DU)}fU.prototype=LU.prototype={constructor:fU,select:function(t){"function"!=typeof t&&(t=gm(t));for(var e=this._groups,n=e.length,l=new Array(n),i=0;i=S&&(S=R+1);!(N=F[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Om);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?nU:"function"==typeof e?iU:lU)(t,e,null==n?"":n)):aU(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?sU:"function"==typeof e?oU:rU)(t,e)):this.node()[t]},classed:function(t,e){var n=cU(t+"");if(arguments.length<2){for(var l=dU(this.node()),i=-1,a=n.length;++i{}};function zU(){for(var t,e=0,n=arguments.length,l={};e=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function _U(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--HU}()}finally{HU=0,function(){for(var t,e,n=PU,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:PU=e);AU=t,up(l)}(),ep=0}}function dp(){var t=lp.now(),e=t-tp;e>1e3&&(np-=e,tp=t)}function up(t){HU||(qU&&(qU=clearTimeout(qU)),t-ep>24?(t<1/0&&(qU=setTimeout(cp,t-lp.now()-np)),$U&&($U=clearInterval($U))):($U||(tp=lp.now(),$U=setInterval(dp,1e3)),HU=1,ip(cp)))}function hp(t,e,n){var l=new rp;return e=null==e?0:+e,l.restart((n=>{l.stop(),t(n+e)}),e,n),l}rp.prototype=op.prototype={constructor:rp,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?ap():+n)+(null==e?0:+e),this._next||AU===this||(AU?AU._next=this:PU=this,AU=this),this._call=t,this._time=n,up()},stop:function(){this._call&&(this._call=null,this._time=1/0,up())}};var mp=KU("start","end","cancel","interrupt"),Up=[];function pp(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return hp(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function bp(t,e){var n=Zp(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Zp(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Np(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Rp,Sp=180/Math.PI,Wp={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Vp(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Np(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Np(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Np(t,n)},{i:r-2,x:Np(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Ap(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Ap(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=fp.exec(t))?new $p(e[1],e[2],e[3],1):(e=Lp.exec(t))?new $p(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=wp.exec(t))?Ap(e[1],e[2],e[3],e[4]):(e=xp.exec(t))?Ap(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=zp.exec(t))?lF(e[1],e[2]/100,e[3]/100,1):(e=vp.exec(t))?lF(e[1],e[2]/100,e[3]/100,e[4]):Op.hasOwnProperty(t)?Pp(Op[t]):"transparent"===t?new $p(NaN,NaN,NaN,0):null}function Pp(t){return new $p(t>>16&255,t>>8&255,255&t,1)}function Ap(t,e,n,l){return l<=0&&(t=e=n=NaN),new $p(t,e,n,l)}function Hp(t){return t instanceof Jp||(t=Kp(t)),t?new $p((t=t.rgb()).r,t.g,t.b,t.opacity):new $p}function qp(t,e,n,l){return 1===arguments.length?Hp(t):new $p(t,e,n,null==l?1:l)}function $p(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function tF(){return"#"+nF(this.r)+nF(this.g)+nF(this.b)}function eF(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function nF(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function lF(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new aF(t,e,n,l)}function iF(t){if(t instanceof aF)return new aF(t.h,t.s,t.l,t.opacity);if(t instanceof Jp||(t=Kp(t)),!t)return new aF;if(t instanceof aF)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new aF(s,r,o,t.opacity)}function aF(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function sF(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rF(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}Gp(Jp,Kp,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:_p,formatHex:_p,formatHsl:function(){return iF(this).formatHsl()},formatRgb:jp,toString:jp}),Gp($p,qp,Bp(Jp,{brighter:function(t){return t=null==t?Yp:Math.pow(Yp,t),new $p(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?kp:Math.pow(kp,t),new $p(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:tF,formatHex:tF,formatRgb:eF,toString:eF})),Gp(aF,(function(t,e,n,l){return 1===arguments.length?iF(t):new aF(t,e,n,null==l?1:l)}),Bp(Jp,{brighter:function(t){return t=null==t?Yp:Math.pow(Yp,t),new aF(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?kp:Math.pow(kp,t),new aF(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new $p(sF(t>=240?t-240:t+120,i,l),sF(t,i,l),sF(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const oF=t=>()=>t;function cF(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):oF(isNaN(t)?e:t)}const dF=function t(e){var n=function(t){return 1==(t=+t)?cF:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):oF(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=qp(t)).r,(e=qp(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=cF(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function uF(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=la&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Np(n,l)})),a=mF.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Fp:bp;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var JF=wU.prototype.constructor;function kF(t){return function(){this.style.removeProperty(t)}}function YF(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function CF(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&YF(t,a,n)),l}return a._value=e,a}function XF(t){return function(e){this.textContent=t.call(this,e)}}function IF(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&XF(l)),e}return l._value=t,l}var DF=0;function fF(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function LF(){return++DF}var wF=wU.prototype;fF.prototype=function(t){return wU().transition(t)}.prototype={constructor:fF,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=gm(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}(this,t)}))},wU.prototype.transition=function(t){var e,n;t instanceof fF?(e=t._id,t=t._name):(e=LF(),(n=xF).time=ap(),t=null==t?null:t+"");for(var l=this._groups,i=l.length,a=0;a0?$F(ub,--cb):0,rb--,10===db&&(rb=1,sb--),db}function Ub(){return db=cb2||Zb(db)>3?"":" "}function Sb(t,e){for(;--e&&Ub()&&!(db<48||db>102||db>57&&db<65||db>70&&db<97););return bb(t,Fb()+(e<6&&32==pb()&&32==Ub()))}function Wb(t){for(;Ub();)switch(db){case t:return cb;case 34:case 39:34!==t&&39!==t&&Wb(db);break;case 40:41===t&&Wb(t);break;case 92:Ub()}return cb}function Vb(t,e){for(;Ub()&&t+db!==57&&(t+db!==84||47!==pb()););return"/*"+bb(e,cb-1)+"*"+PF(47===t?t:Ub())}function Qb(t){for(;!Zb(pb());)Ub();return bb(t,cb)}function yb(t){return function(t){return ub="",t}(Tb("",null,null,null,[""],t=function(t){return sb=rb=1,ob=eb(ub=t),cb=0,[]}(t),0,[0],t))}function Tb(t,e,n,l,i,a,s,r,o){for(var c=0,d=0,u=s,h=0,m=0,U=0,p=1,F=1,b=1,Z=0,N="",R=i,S=a,W=l,V=N;F;)switch(U=Z,Z=Ub()){case 40:if(108!=U&&58==V.charCodeAt(u-1)){-1!=qF(V+=HF(Nb(Z),"&","&\f"),"&\f")&&(b=-1);break}case 34:case 39:case 91:V+=Nb(Z);break;case 9:case 10:case 13:case 32:V+=Rb(U);break;case 92:V+=Sb(Fb()-1,7);continue;case 47:switch(pb()){case 42:case 47:lb(gb(Vb(Ub(),Fb()),e,n),o);break;default:V+="/"}break;case 123*p:r[c++]=eb(V)*b;case 125*p:case 59:case 0:switch(Z){case 0:case 125:F=0;case 59+d:m>0&&eb(V)-u&&lb(m>32?Eb(V+";",l,n,u-1):Eb(HF(V," ","")+";",l,n,u-2),o);break;case 59:V+=";";default:if(lb(W=Mb(V,e,n,c,d,i,r,N,R=[],S=[],u),a),123===Z)if(0===d)Tb(V,e,W,W,R,a,u,r,S);else switch(h){case 100:case 109:case 115:Tb(t,W,W,l&&lb(Mb(t,W,W,0,0,i,r,N,i,R=[],u),S),i,S,u,r,l?R:S);break;default:Tb(V,W,W,W,[""],S,0,r,S)}}c=d=m=0,p=b=1,N=V="",u=s;break;case 58:u=1+eb(V),m=U;default:if(p<1)if(123==Z)--p;else if(125==Z&&0==p++&&125==mb())continue;switch(V+=PF(Z),Z*p){case 38:b=d>0?1:(V+="\f",-1);break;case 44:r[c++]=(eb(V)-1)*b,b=1;break;case 64:45===pb()&&(V+=Nb(Ub())),h=pb(),d=u=eb(N=V+=Qb(Fb())),Z++;break;case 45:45===U&&2==eb(V)&&(p=0)}}return a}function Mb(t,e,n,l,i,a,s,r,o,c,d){for(var u=i-1,h=0===i?a:[""],m=nb(h),U=0,p=0,F=0;U0?h[b]+" "+Z:HF(Z,/&\f/g,h[b])))&&(o[F++]=N);return hb(t,e,n,0===i?_F:r,o,c,d)}function gb(t,e,n){return hb(t,e,n,OF,PF(db),tb(t,2,-2),0)}function Eb(t,e,n,l){return hb(t,e,n,jF,tb(t,0,l),tb(t,l+1,-1),l)}const Gb="8.14.0";var Bb=n(9609),Jb=n(7856),kb=n.n(Jb),Yb=function(t){var e=t.replace(/\\u[\dA-F]{4}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\u/g,""),16))}));return(e=(e=e.replace(/\\x([0-9a-f]{2})/gi,(function(t,e){return String.fromCharCode(parseInt(e,16))}))).replace(/\\[\d\d\d]{3}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))).replace(/\\[\d\d\d]{2}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))},Cb=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}var l=Yb(e);return(l=(l=(l=l.replace(/script>/gi,"#")).replace(/javascript:/gi,"#")).replace(/onerror=/gi,"onerror:")).replace(/')}if(void 0!==n)switch(p){case"flowchart":case"flowchart-v2":n(Q,pS.bindFunctions);break;case"gantt":n(Q,NW.bindFunctions);break;case"class":case"classDiagram":n(Q,ZN.bindFunctions);break;default:n(Q)}else s.debug("CB = undefined!");eQ.forEach((function(t){t()})),eQ=[];var M="sandbox"===r.securityLevel?"#i"+t:"#d"+t,g=ac(M).node();return null!==g&&"function"==typeof g.remove&&ac(M).node().remove(),Q},parse:function(t){var e=qZ(),n=zZ.detectInit(t,e);n&&s.debug("reinit ",n);var l,i=zZ.detectType(t,e);switch(s.debug("Type "+i),i){case"git":(l=LW()).parser.yy=IW;break;case"flowchart":case"flowchart-v2":pS.clear(),(l=bS()).parser.yy=pS;break;case"sequence":(l=JV()).parser.yy=tQ;break;case"gantt":(l=VW()).parser.yy=NW;break;case"class":case"classDiagram":(l=QN()).parser.yy=ZN;break;case"state":case"stateDiagram":(l=_Q()).parser.yy=ry;break;case"info":s.debug("info info info"),(l=eV()).parser.yy=$W;break;case"pie":s.debug("pie"),(l=aV()).parser.yy=cV;break;case"er":s.debug("er"),(l=CR()).parser.yy=kR;break;case"journey":s.debug("Journey"),(l=Cy()).parser.yy=ky;break;case"requirement":case"requirementDiagram":s.debug("RequirementDiagram"),(l=UV()).parser.yy=RV}return l.parser.yy.graphType=i,l.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},l.parse(t),l},parseDirective:function(t,e,n,l){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":aT={};break;case"type_directive":aT.type=e.toLowerCase();break;case"arg_directive":aT.args=JSON.parse(e);break;case"close_directive":(function(t,e,n){switch(s.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),s.debug("sanitize in handleDirective",e.args),wZ(e.args),s.debug("sanitize in handleDirective (done)",e.args),e.args,tN(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":s.warn("themeCss encountered");break;default:s.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}})(t,aT,l),aT=null}}catch(t){s.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),s.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),function(t){OZ=kZ({},t)}(t),t&&t.theme&&aZ[t.theme]?t.themeVariables=aZ[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=aZ.default.getThemeVariables(t.themeVariables));var e="object"===lT(t)?function(t){return jZ=kZ({},_Z),jZ=kZ(jZ,t),t.theme&&(jZ.themeVariables=aZ[t.theme].getThemeVariables(t.themeVariables)),PZ=AZ(jZ,KZ),jZ}(t):HZ();sT(e),r(e.logLevel)},reinitialize:function(){},getConfig:qZ,setConfig:function(t){return kZ(PZ,t),qZ()},getSiteConfig:HZ,updateSiteConfig:function(t){return jZ=kZ(jZ,t),AZ(jZ,KZ),jZ},reset:function(){eN()},globalReset:function(){eN(),sT(qZ())},defaultConfig:_Z});r(qZ().logLevel),eN(qZ());const oT=rT;var cT=function(){dT.startOnLoad?oT.getConfig().startOnLoad&&dT.init():void 0===dT.startOnLoad&&(s.debug("In start, no config"),oT.getConfig().startOnLoad&&dT.init())};"undefined"!=typeof document&&window.addEventListener("load",(function(){cT()}),!1);var dT={startOnLoad:!0,htmlLabels:!0,mermaidAPI:oT,parse:oT.parse,render:oT.render,init:function(){var t,e,n=this,l=oT.getConfig();arguments.length>=2?(void 0!==arguments[0]&&(dT.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],s.debug("Callback function found")):void 0!==l.mermaid&&("function"==typeof l.mermaid.callback?(e=l.mermaid.callback,s.debug("Callback function found")):s.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,s.debug("Start On Load before: "+dT.startOnLoad),void 0!==dT.startOnLoad&&(s.debug("Start On Load inner: "+dT.startOnLoad),oT.updateSiteConfig({startOnLoad:dT.startOnLoad})),void 0!==dT.ganttConfig&&oT.updateSiteConfig({gantt:dT.ganttConfig});for(var i,a=new zZ.initIdGeneratior(l.deterministicIds,l.deterministicIDSeed),r=function(l){var r=t[l];if(r.getAttribute("data-processed"))return"continue";r.setAttribute("data-processed",!0);var o="mermaid-".concat(a.next());i=r.innerHTML,i=zZ.entityDecode(i).trim().replace(//gi,"
");var c=zZ.detectInit(i);c&&s.debug("Detected early reinit: ",c);try{oT.render(o,i,(function(t,n){r.innerHTML=t,void 0!==e&&e(o),n&&n(r)}),r)}catch(t){s.warn("Syntax Error rendering"),s.warn(t),n.parseError&&n.parseError(t)}},o=0;o{t.exports={graphlib:n(6614),dagre:n(1463),intersect:n(8114),render:n(5787),util:n(8355),version:n(5689)}},9144:(t,e,n)=>{var l=n(8355);function i(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}t.exports={default:i,normal:i,vee:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])},undirected:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");l.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}}},5632:(t,e,n)=>{var l=n(8355),i=n(4322),a=n(1322);t.exports=function(t,e){var n,s=e.nodes().filter((function(t){return l.isSubgraph(e,t)})),r=t.selectAll("g.cluster").data(s,(function(t){return t}));return r.selectAll("*").remove(),r.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0),r=t.selectAll("g.cluster"),l.applyTransition(r,e).style("opacity",1),r.each((function(t){var n=e.node(t),l=i.select(this);i.select(this).append("rect");var s=l.append("g").attr("class","label");a(s,n,n.clusterLabelPos)})),r.selectAll("rect").each((function(t){var n=e.node(t),a=i.select(this);l.applyStyle(a,n.style)})),n=r.exit?r.exit():r.selectAll(null),l.applyTransition(n,e).style("opacity",0).remove(),r}},6315:(t,e,n)=>{var l=n(1034),i=n(1322),a=n(8355),s=n(4322);t.exports=function(t,e){var n,r=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0);return r.exit().remove(),r.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(r=t.selectAll("g.edgeLabel")).each((function(t){var n=s.select(this);n.select(".label").remove();var a=e.edge(t),r=i(n,e.edge(t),0,0).classed("label",!0),o=r.node().getBBox();a.labelId&&r.attr("id",a.labelId),l.has(a,"width")||(a.width=o.width),l.has(a,"height")||(a.height=o.height)})),n=r.exit?r.exit():r.selectAll(null),a.applyTransition(n,e).style("opacity",0).remove(),r}},940:(t,e,n)=>{var l=n(1034),i=n(7584),a=n(8355),s=n(4322);function r(t,e){var n=(s.line||s.svg.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}t.exports=function(t,e,n){var o=t.selectAll("g.edgePath").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0),c=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),i=e.node(t.v).elem;return r(n,l.range(n.points.length).map((function(){return e=(t=i).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(o,e);!function(t,e){var n=t.exit();a.applyTransition(n,e).style("opacity",0).remove()}(o,e);var d=void 0!==o.merge?o.merge(c):o;return a.applyTransition(d,e).style("opacity",1),d.each((function(t){var n=s.select(this),l=e.edge(t);l.elem=this,l.id&&n.attr("id",l.id),a.applyClass(n,l.class,(n.classed("update")?"update ":"")+"edgePath")})),d.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=l.uniqueId("arrowhead");var o=s.select(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e+")");var t,e})).style("fill","none");a.applyTransition(o,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),l=t.node(e.v),a=t.node(e.w),s=n.points.slice(1,n.points.length-1);return s.unshift(i(l,s[0])),s.push(i(a,s[s.length-1])),r(n,s)}(e,t)})),a.applyStyle(o,n.style)})),d.selectAll("defs *").remove(),d.selectAll("defs").each((function(t){var l=e.edge(t);(0,n[l.arrowhead])(s.select(this),l.arrowheadId,l,"arrowhead")})),d}},607:(t,e,n)=>{var l=n(1034),i=n(1322),a=n(8355),s=n(4322);t.exports=function(t,e,n){var r,o=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),c=t.selectAll("g.node").data(o,(function(t){return t})).classed("update",!0);return c.exit().remove(),c.enter().append("g").attr("class","node").style("opacity",0),(c=t.selectAll("g.node")).each((function(t){var r=e.node(t),o=s.select(this);a.applyClass(o,r.class,(o.classed("update")?"update ":"")+"node"),o.select("g.label").remove();var c=o.append("g").attr("class","label"),d=i(c,r),u=n[r.shape],h=l.pick(d.node().getBBox(),"width","height");r.elem=this,r.id&&o.attr("id",r.id),r.labelId&&c.attr("id",r.labelId),l.has(r,"width")&&(h.width=r.width),l.has(r,"height")&&(h.height=r.height),h.width+=r.paddingLeft+r.paddingRight,h.height+=r.paddingTop+r.paddingBottom,c.attr("transform","translate("+(r.paddingLeft-r.paddingRight)/2+","+(r.paddingTop-r.paddingBottom)/2+")");var m=s.select(this);m.select(".label-container").remove();var U=u(m,h,r).classed("label-container",!0);a.applyStyle(U,r.style);var p=U.node().getBBox();r.width=p.width,r.height=p.height})),r=c.exit?c.exit():c.selectAll(null),a.applyTransition(r,e).style("opacity",0).remove(),c}},4322:(t,e,n)=>{var l;if(!l)try{l=n(7188)}catch(t){}l||(l=window.d3),t.exports=l},1463:(t,e,n)=>{var l;try{l=n(681)}catch(t){}l||(l=window.dagre),t.exports=l},6614:(t,e,n)=>{var l;try{l=n(8282)}catch(t){}l||(l=window.graphlib),t.exports=l},8114:(t,e,n)=>{t.exports={node:n(7584),circle:n(6587),ellipse:n(3260),polygon:n(5337),rect:n(8049)}},6587:(t,e,n)=>{var l=n(3260);t.exports=function(t,e,n){return l(t,e,e,n)}},3260:t=>{t.exports=function(t,e,n,l){var i=t.x,a=t.y,s=i-l.x,r=a-l.y,o=Math.sqrt(e*e*r*r+n*n*s*s),c=Math.abs(e*n*s/o);l.x{function e(t,e){return t*e>0}t.exports=function(t,n,l,i){var a,s,r,o,c,d,u,h,m,U,p,F,b;if(a=n.y-t.y,r=t.x-n.x,c=n.x*t.y-t.x*n.y,m=a*l.x+r*l.y+c,U=a*i.x+r*i.y+c,!(0!==m&&0!==U&&e(m,U)||(s=i.y-l.y,o=l.x-i.x,d=i.x*l.y-l.x*i.y,u=s*t.x+o*t.y+d,h=s*n.x+o*n.y+d,0!==u&&0!==h&&e(u,h)||0==(p=a*o-s*r))))return F=Math.abs(p/2),{x:(b=r*d-o*c)<0?(b-F)/p:(b+F)/p,y:(b=s*c-a*d)<0?(b-F)/p:(b+F)/p}}},7584:t=>{t.exports=function(t,e){return t.intersect(e)}},5337:(t,e,n)=>{var l=n(6808);t.exports=function(t,e,n){var i=t.x,a=t.y,s=[],r=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach((function(t){r=Math.min(r,t.x),o=Math.min(o,t.y)}));for(var c=i-t.width/2-r,d=a-t.height/2-o,u=0;u1&&s.sort((function(t,e){var l=t.x-n.x,i=t.y-n.y,a=Math.sqrt(l*l+i*i),s=e.x-n.x,r=e.y-n.y,o=Math.sqrt(s*s+r*r);return a{t.exports=function(t,e){var n,l,i=t.x,a=t.y,s=e.x-i,r=e.y-a,o=t.width/2,c=t.height/2;return Math.abs(r)*o>Math.abs(s)*c?(r<0&&(c=-c),n=0===r?0:c*s/r,l=c):(s<0&&(o=-o),n=o,l=0===s?0:o*r/s),{x:i+n,y:a+l}}},8284:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}l.applyStyle(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var s=i.node().getBoundingClientRect();return n.attr("width",s.width).attr("height",s.height),n}},1322:(t,e,n)=>{var l=n(7318),i=n(8284),a=n(8287);t.exports=function(t,e,n){var s=e.label,r=t.append("g");"svg"===e.labelType?a(r,e):"string"!=typeof s||"html"===e.labelType?i(r,e):l(r,e);var o,c=r.node().getBBox();switch(n){case"top":o=-e.height/2;break;case"bottom":o=e.height/2-c.height;break;default:o=-c.height/2}return r.attr("transform","translate("+-c.width/2+","+o+")"),r}},8287:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){var n=t;return n.node().appendChild(e.label),l.applyStyle(n,e.labelStyle),n}},7318:(t,e,n)=>{var l=n(8355);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",l=!1,i=0;i{var l;try{l={defaults:n(1747),each:n(6073),isFunction:n(3560),isPlainObject:n(8630),pick:n(9722),has:n(8721),range:n(6026),uniqueId:n(3955)}}catch(t){}l||(l=window._),t.exports=l},6381:(t,e,n)=>{var l=n(8355),i=n(4322);t.exports=function(t,e){var n=t.filter((function(){return!i.select(this).classed("update")}));function a(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",a),l.applyTransition(t,e).style("opacity",1).attr("transform",a),l.applyTransition(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}},4577:(t,e,n)=>{var l=n(8355),i=n(4322),a=n(1034);t.exports=function(t,e){function n(t){var n=e.edge(t);return a.has(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),l.applyTransition(t,e).style("opacity",1).attr("transform",n)}},4849:(t,e,n)=>{var l=n(8355),i=n(4322);t.exports=function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),l.applyTransition(t,e).style("opacity",1).attr("transform",n)}},5787:(t,e,n)=>{var l=n(1034),i=n(4322),a=n(1463).layout;t.exports=function(){var t=n(607),e=n(5632),i=n(6315),c=n(940),d=n(4849),u=n(4577),h=n(6381),m=n(4418),U=n(9144),p=function(n,p){!function(t){t.nodes().forEach((function(e){var n=t.node(e);l.has(n,"label")||t.children(e).length||(n.label=e),l.has(n,"paddingX")&&l.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),l.has(n,"paddingY")&&l.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),l.has(n,"padding")&&l.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),l.defaults(n,s),l.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),l.has(n,"width")&&(n._prevWidth=n.width),l.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);l.has(n,"label")||(n.label=""),l.defaults(n,r)}))}(p);var F=o(n,"output"),b=o(F,"clusters"),Z=o(F,"edgePaths"),N=i(o(F,"edgeLabels"),p),R=t(o(F,"nodes"),p,m);a(p),d(R,p),u(N,p),c(Z,p,U);var S=e(b,p);h(S,p),function(t){l.each(t.nodes(),(function(e){var n=t.node(e);l.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,l.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(p)};return p.createNodes=function(e){return arguments.length?(t=e,p):t},p.createClusters=function(t){return arguments.length?(e=t,p):e},p.createEdgeLabels=function(t){return arguments.length?(i=t,p):i},p.createEdgePaths=function(t){return arguments.length?(c=t,p):c},p.shapes=function(t){return arguments.length?(m=t,p):m},p.arrows=function(t){return arguments.length?(U=t,p):U},p};var s={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},r={arrowhead:"normal",curve:i.curveLinear};function o(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},4418:(t,e,n)=>{var l=n(8049),i=n(3260),a=n(6587),s=n(5337);t.exports={rect:function(t,e,n){var i=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return l(n,t)},i},ellipse:function(t,e,n){var l=e.width/2,a=e.height/2,s=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",l).attr("ry",a);return n.intersect=function(t){return i(n,l,a,t)},s},circle:function(t,e,n){var l=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",l);return n.intersect=function(t){return a(n,l,t)},i},diamond:function(t,e,n){var l=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-l,y:0},{x:0,y:i},{x:l,y:0}],r=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return s(n,a,t)},r}}},8355:(t,e,n)=>{var l=n(1034);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(l.isPlainObject(n)){var i=n.transition;if(l.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},5689:t=>{t.exports="0.6.4"},7188:(t,e,n)=>{n.r(e),n.d(e,{FormatSpecifier:()=>oo,active:()=>$l,arc:()=>uS,area:()=>bS,areaRadial:()=>TS,ascending:()=>i,autoType:()=>Xs,axisBottom:()=>it,axisLeft:()=>at,axisRight:()=>lt,axisTop:()=>nt,bisect:()=>c,bisectLeft:()=>o,bisectRight:()=>r,bisector:()=>a,blob:()=>Fr,brush:()=>gi,brushSelection:()=>yi,brushX:()=>Ti,brushY:()=>Mi,buffer:()=>Zr,chord:()=>Ii,clientPoint:()=>Bn,cluster:()=>Tm,color:()=>je,contourDensity:()=>ss,contours:()=>ts,create:()=>DR,creator:()=>ie,cross:()=>h,csv:()=>Vr,csvFormat:()=>Vs,csvFormatBody:()=>Qs,csvFormatRow:()=>Ts,csvFormatRows:()=>ys,csvFormatValue:()=>Ms,csvParse:()=>Ss,csvParseRows:()=>Ws,cubehelix:()=>va,curveBasis:()=>sW,curveBasisClosed:()=>oW,curveBasisOpen:()=>dW,curveBundle:()=>hW,curveCardinal:()=>pW,curveCardinalClosed:()=>bW,curveCardinalOpen:()=>NW,curveCatmullRom:()=>WW,curveCatmullRomClosed:()=>QW,curveCatmullRomOpen:()=>TW,curveLinear:()=>mS,curveLinearClosed:()=>gW,curveMonotoneX:()=>XW,curveMonotoneY:()=>IW,curveNatural:()=>LW,curveStep:()=>xW,curveStepAfter:()=>vW,curveStepBefore:()=>zW,customEvent:()=>Fe,descending:()=>m,deviation:()=>F,dispatch:()=>ht,drag:()=>ms,dragDisable:()=>Me,dragEnable:()=>ge,dsv:()=>Wr,dsvFormat:()=>Ns,easeBack:()=>dr,easeBackIn:()=>or,easeBackInOut:()=>dr,easeBackOut:()=>cr,easeBounce:()=>ar,easeBounceIn:()=>ir,easeBounceInOut:()=>sr,easeBounceOut:()=>ar,easeCircle:()=>nr,easeCircleIn:()=>tr,easeCircleInOut:()=>nr,easeCircleOut:()=>er,easeCubic:()=>Pl,easeCubicIn:()=>jl,easeCubicInOut:()=>Pl,easeCubicOut:()=>Kl,easeElastic:()=>mr,easeElasticIn:()=>hr,easeElasticInOut:()=>Ur,easeElasticOut:()=>mr,easeExp:()=>$s,easeExpIn:()=>Hs,easeExpInOut:()=>$s,easeExpOut:()=>qs,easeLinear:()=>Ds,easePoly:()=>vs,easePolyIn:()=>xs,easePolyInOut:()=>vs,easePolyOut:()=>zs,easeQuad:()=>ws,easeQuadIn:()=>fs,easeQuadInOut:()=>ws,easeQuadOut:()=>Ls,easeSin:()=>Ps,easeSinIn:()=>js,easeSinInOut:()=>Ps,easeSinOut:()=>Ks,entries:()=>Ua,event:()=>de,extent:()=>b,forceCenter:()=>Jr,forceCollide:()=>Or,forceLink:()=>Kr,forceManyBody:()=>$r,forceRadial:()=>to,forceSimulation:()=>qr,forceX:()=>eo,forceY:()=>no,format:()=>Uo,formatDefaultLocale:()=>No,formatLocale:()=>Zo,formatPrefix:()=>po,formatSpecifier:()=>ro,geoAlbers:()=>wh,geoAlbersUsa:()=>xh,geoArea:()=>pc,geoAzimuthalEqualArea:()=>_h,geoAzimuthalEqualAreaRaw:()=>Oh,geoAzimuthalEquidistant:()=>Kh,geoAzimuthalEquidistantRaw:()=>jh,geoBounds:()=>rd,geoCentroid:()=>Nd,geoCircle:()=>Gd,geoClipAntimeridian:()=>xd,geoClipCircle:()=>zd,geoClipExtent:()=>jd,geoClipRectangle:()=>_d,geoConicConformal:()=>tm,geoConicConformalRaw:()=>$h,geoConicEqualArea:()=>Lh,geoConicEqualAreaRaw:()=>fh,geoConicEquidistant:()=>im,geoConicEquidistantRaw:()=>lm,geoContains:()=>Uu,geoDistance:()=>au,geoEqualEarth:()=>um,geoEqualEarthRaw:()=>dm,geoEquirectangular:()=>nm,geoEquirectangularRaw:()=>em,geoGnomonic:()=>mm,geoGnomonicRaw:()=>hm,geoGraticule:()=>bu,geoGraticule10:()=>Zu,geoIdentity:()=>Um,geoInterpolate:()=>Nu,geoLength:()=>nu,geoMercator:()=>Ah,geoMercatorRaw:()=>Ph,geoNaturalEarth1:()=>Fm,geoNaturalEarth1Raw:()=>pm,geoOrthographic:()=>Zm,geoOrthographicRaw:()=>bm,geoPath:()=>Wh,geoProjection:()=>Xh,geoProjectionMutator:()=>Ih,geoRotation:()=>Md,geoStereographic:()=>Rm,geoStereographicRaw:()=>Nm,geoStream:()=>nc,geoTransform:()=>Vh,geoTransverseMercator:()=>Wm,geoTransverseMercatorRaw:()=>Sm,gray:()=>Va,hcl:()=>Ja,hierarchy:()=>gm,histogram:()=>B,hsl:()=>an,html:()=>Gr,image:()=>yr,interpolate:()=>En,interpolateArray:()=>Sn,interpolateBasis:()=>cn,interpolateBasisClosed:()=>dn,interpolateBlues:()=>uR,interpolateBrBG:()=>VN,interpolateBuGn:()=>wN,interpolateBuPu:()=>zN,interpolateCividis:()=>WR,interpolateCool:()=>yR,interpolateCubehelix:()=>LU,interpolateCubehelixDefault:()=>VR,interpolateCubehelixLong:()=>wU,interpolateDate:()=>Vn,interpolateDiscrete:()=>TU,interpolateGnBu:()=>ON,interpolateGreens:()=>mR,interpolateGreys:()=>pR,interpolateHcl:()=>IU,interpolateHclLong:()=>DU,interpolateHsl:()=>kU,interpolateHslLong:()=>YU,interpolateHue:()=>MU,interpolateInferno:()=>XR,interpolateLab:()=>CU,interpolateMagma:()=>CR,interpolateNumber:()=>Qn,interpolateNumberArray:()=>Nn,interpolateObject:()=>yn,interpolateOrRd:()=>jN,interpolateOranges:()=>SR,interpolatePRGn:()=>yN,interpolatePiYG:()=>MN,interpolatePlasma:()=>IR,interpolatePuBu:()=>HN,interpolatePuBuGn:()=>PN,interpolatePuOr:()=>EN,interpolatePuRd:()=>$N,interpolatePurples:()=>bR,interpolateRainbow:()=>MR,interpolateRdBu:()=>BN,interpolateRdGy:()=>kN,interpolateRdPu:()=>eR,interpolateRdYlBu:()=>CN,interpolateRdYlGn:()=>IN,interpolateReds:()=>NR,interpolateRgb:()=>pn,interpolateRgbBasis:()=>bn,interpolateRgbBasisClosed:()=>Zn,interpolateRound:()=>gU,interpolateSinebow:()=>BR,interpolateSpectral:()=>fN,interpolateString:()=>gn,interpolateTransformCss:()=>Ul,interpolateTransformSvg:()=>pl,interpolateTurbo:()=>JR,interpolateViridis:()=>YR,interpolateWarm:()=>QR,interpolateYlGn:()=>aR,interpolateYlGnBu:()=>lR,interpolateYlOrBr:()=>rR,interpolateYlOrRd:()=>cR,interpolateZoom:()=>BU,interrupt:()=>al,interval:()=>uV,isoFormat:()=>oV,isoParse:()=>dV,json:()=>Mr,keys:()=>ha,lab:()=>Qa,lch:()=>Ba,line:()=>FS,lineRadial:()=>yS,linkHorizontal:()=>CS,linkRadial:()=>IS,linkVertical:()=>XS,local:()=>LR,map:()=>na,matcher:()=>bt,max:()=>C,mean:()=>X,median:()=>I,merge:()=>D,min:()=>f,mouse:()=>kn,namespace:()=>yt,namespaces:()=>Qt,nest:()=>la,now:()=>vn,pack:()=>$m,packEnclose:()=>Ym,packSiblings:()=>jm,pairs:()=>d,partition:()=>aU,path:()=>_i,permute:()=>L,pie:()=>RS,piecewise:()=>xU,pointRadial:()=>MS,polygonArea:()=>vU,polygonCentroid:()=>OU,polygonContains:()=>AU,polygonHull:()=>PU,polygonLength:()=>HU,precisionFixed:()=>Ro,precisionPrefix:()=>So,precisionRound:()=>Wo,quadtree:()=>fr,quantile:()=>J,quantize:()=>zU,radialArea:()=>TS,radialLine:()=>yS,randomBates:()=>lp,randomExponential:()=>ip,randomIrwinHall:()=>np,randomLogNormal:()=>ep,randomNormal:()=>tp,randomUniform:()=>$U,range:()=>V,rgb:()=>He,ribbon:()=>qi,scaleBand:()=>hp,scaleDiverging:()=>aN,scaleDivergingLog:()=>sN,scaleDivergingPow:()=>oN,scaleDivergingSqrt:()=>cN,scaleDivergingSymlog:()=>rN,scaleIdentity:()=>gp,scaleImplicit:()=>dp,scaleLinear:()=>Mp,scaleLog:()=>Ip,scaleOrdinal:()=>up,scalePoint:()=>Up,scalePow:()=>_p,scaleQuantile:()=>Kp,scaleQuantize:()=>Pp,scaleSequential:()=>qZ,scaleSequentialLog:()=>$Z,scaleSequentialPow:()=>eN,scaleSequentialQuantile:()=>lN,scaleSequentialSqrt:()=>nN,scaleSequentialSymlog:()=>tN,scaleSqrt:()=>jp,scaleSymlog:()=>wp,scaleThreshold:()=>Ap,scaleTime:()=>fZ,scaleUtc:()=>PZ,scan:()=>w,schemeAccent:()=>hN,schemeBlues:()=>dR,schemeBrBG:()=>WN,schemeBuGn:()=>LN,schemeBuPu:()=>xN,schemeCategory10:()=>uN,schemeDark2:()=>mN,schemeGnBu:()=>vN,schemeGreens:()=>hR,schemeGreys:()=>UR,schemeOrRd:()=>_N,schemeOranges:()=>RR,schemePRGn:()=>QN,schemePaired:()=>UN,schemePastel1:()=>pN,schemePastel2:()=>FN,schemePiYG:()=>TN,schemePuBu:()=>AN,schemePuBuGn:()=>KN,schemePuOr:()=>gN,schemePuRd:()=>qN,schemePurples:()=>FR,schemeRdBu:()=>GN,schemeRdGy:()=>JN,schemeRdPu:()=>tR,schemeRdYlBu:()=>YN,schemeRdYlGn:()=>XN,schemeReds:()=>ZR,schemeSet1:()=>bN,schemeSet2:()=>ZN,schemeSet3:()=>NN,schemeSpectral:()=>DN,schemeTableau10:()=>RN,schemeYlGn:()=>iR,schemeYlGnBu:()=>nR,schemeYlOrBr:()=>sR,schemeYlOrRd:()=>oR,select:()=>Qe,selectAll:()=>xR,selection:()=>Ve,selector:()=>Ut,selectorAll:()=>Ft,set:()=>ua,shuffle:()=>x,stack:()=>KW,stackOffsetDiverging:()=>AW,stackOffsetExpand:()=>PW,stackOffsetNone:()=>OW,stackOffsetSilhouette:()=>HW,stackOffsetWiggle:()=>qW,stackOrderAppearance:()=>$W,stackOrderAscending:()=>eV,stackOrderDescending:()=>lV,stackOrderInsideOut:()=>iV,stackOrderNone:()=>_W,stackOrderReverse:()=>aV,stratify:()=>dU,style:()=>Xt,sum:()=>z,svg:()=>Br,symbol:()=>nW,symbolCircle:()=>DS,symbolCross:()=>fS,symbolDiamond:()=>xS,symbolSquare:()=>jS,symbolStar:()=>_S,symbolTriangle:()=>PS,symbolWye:()=>tW,symbols:()=>eW,text:()=>Rr,thresholdFreedmanDiaconis:()=>k,thresholdScott:()=>Y,thresholdSturges:()=>G,tickFormat:()=>yp,tickIncrement:()=>g,tickStep:()=>E,ticks:()=>M,timeDay:()=>MF,timeDays:()=>gF,timeFormat:()=>mb,timeFormatDefaultLocale:()=>YZ,timeFormatLocale:()=>ub,timeFriday:()=>bF,timeFridays:()=>QF,timeHour:()=>GF,timeHours:()=>BF,timeInterval:()=>$p,timeMillisecond:()=>fF,timeMilliseconds:()=>LF,timeMinute:()=>kF,timeMinutes:()=>YF,timeMonday:()=>mF,timeMondays:()=>RF,timeMonth:()=>iF,timeMonths:()=>aF,timeParse:()=>Ub,timeSaturday:()=>ZF,timeSaturdays:()=>yF,timeSecond:()=>XF,timeSeconds:()=>IF,timeSunday:()=>hF,timeSundays:()=>NF,timeThursday:()=>FF,timeThursdays:()=>VF,timeTuesday:()=>UF,timeTuesdays:()=>SF,timeWednesday:()=>pF,timeWednesdays:()=>WF,timeWeek:()=>hF,timeWeeks:()=>NF,timeYear:()=>eF,timeYears:()=>nF,timeout:()=>qn,timer:()=>jn,timerFlush:()=>Kn,touch:()=>Jn,touches:()=>zR,transition:()=>vl,transpose:()=>v,tree:()=>bU,treemap:()=>WU,treemapBinary:()=>VU,treemapDice:()=>iU,treemapResquarify:()=>yU,treemapSlice:()=>ZU,treemapSliceDice:()=>QU,treemapSquarify:()=>SU,tsv:()=>Qr,tsvFormat:()=>Bs,tsvFormatBody:()=>Js,tsvFormatRow:()=>Ys,tsvFormatRows:()=>ks,tsvFormatValue:()=>Cs,tsvParse:()=>Es,tsvParseRows:()=>Gs,utcDay:()=>lb,utcDays:()=>ib,utcFormat:()=>pb,utcFriday:()=>jF,utcFridays:()=>tb,utcHour:()=>vZ,utcHours:()=>OZ,utcMillisecond:()=>fF,utcMilliseconds:()=>LF,utcMinute:()=>jZ,utcMinutes:()=>KZ,utcMonday:()=>zF,utcMondays:()=>AF,utcMonth:()=>wZ,utcMonths:()=>xZ,utcParse:()=>Fb,utcSaturday:()=>KF,utcSaturdays:()=>eb,utcSecond:()=>XF,utcSeconds:()=>IF,utcSunday:()=>xF,utcSundays:()=>PF,utcThursday:()=>_F,utcThursdays:()=>$F,utcTuesday:()=>vF,utcTuesdays:()=>HF,utcWednesday:()=>OF,utcWednesdays:()=>qF,utcWeek:()=>xF,utcWeeks:()=>PF,utcYear:()=>sb,utcYears:()=>rb,values:()=>ma,variance:()=>p,version:()=>l,voronoi:()=>HV,window:()=>Jt,xml:()=>Er,zip:()=>_,zoom:()=>uQ,zoomIdentity:()=>eQ,zoomTransform:()=>nQ});var l="5.16.0";function i(t,e){return te?1:t>=e?0:NaN}function a(t){var e;return 1===t.length&&(e=t,t=function(t,n){return i(e(t),n)}),{left:function(e,n,l,i){for(null==l&&(l=0),null==i&&(i=e.length);l>>1;t(e[a],n)<0?l=a+1:i=a}return l},right:function(e,n,l,i){for(null==l&&(l=0),null==i&&(i=e.length);l>>1;t(e[a],n)>0?i=a:l=a+1}return l}}}var s=a(i),r=s.right,o=s.left;const c=r;function d(t,e){null==e&&(e=u);for(var n=0,l=t.length-1,i=t[0],a=new Array(l<0?0:l);nt?1:e>=t?0:NaN}function U(t){return null===t?NaN:+t}function p(t,e){var n,l,i=t.length,a=0,s=-1,r=0,o=0;if(null==e)for(;++s1)return o/(a-1)}function F(t,e){var n=p(t,e);return n?Math.sqrt(n):n}function b(t,e){var n,l,i,a=t.length,s=-1;if(null==e){for(;++s=n)for(l=i=n;++sn&&(l=n),i=n)for(l=i=n;++sn&&(l=n),i0)return[t];if((l=e0)for(t=Math.ceil(t/s),e=Math.floor(e/s),a=new Array(i=Math.ceil(e-t+1));++r=0?(a>=Q?10:a>=y?5:a>=T?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=Q?10:a>=y?5:a>=T?2:1)}function E(t,e,n){var l=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(l)/Math.LN10)),a=l/i;return a>=Q?i*=10:a>=y?i*=5:a>=T&&(i*=2),eu;)h.pop(),--m;var U,p=new Array(m+1);for(i=0;i<=m;++i)(U=p[i]=[]).x0=i>0?h[i-1]:d,U.x1=i=1)return+n(t[l-1],l-1,t);var l,i=(l-1)*e,a=Math.floor(i),s=+n(t[a],a,t);return s+(+n(t[a+1],a+1,t)-s)*(i-a)}}function k(t,e,n){return t=R.call(t,U).sort(i),Math.ceil((n-e)/(2*(J(t,.75)-J(t,.25))*Math.pow(t.length,-1/3)))}function Y(t,e,n){return Math.ceil((n-e)/(3.5*F(t)*Math.pow(t.length,-1/3)))}function C(t,e){var n,l,i=t.length,a=-1;if(null==e){for(;++a=n)for(l=n;++al&&(l=n)}else for(;++a=n)for(l=n;++al&&(l=n);return l}function X(t,e){var n,l=t.length,i=l,a=-1,s=0;if(null==e)for(;++a=0;)for(e=(l=t[i]).length;--e>=0;)n[--s]=l[e];return n}function f(t,e){var n,l,i=t.length,a=-1;if(null==e){for(;++a=n)for(l=n;++an&&(l=n)}else for(;++a=n)for(l=n;++an&&(l=n);return l}function L(t,e){for(var n=e.length,l=new Array(n);n--;)l[n]=t[e[n]];return l}function w(t,e){if(n=t.length){var n,l,a=0,s=0,r=t[s];for(null==e&&(e=i);++a=0&&(n=t.slice(l+1),t=t.slice(0,l)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function dt(t,e){for(var n,l=0,i=t.length;l0)for(var n,l,i=new Array(n),a=0;ae?1:t>=e?0:NaN}Nt.prototype={constructor:Nt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Vt="http://www.w3.org/1999/xhtml";const Qt={svg:"http://www.w3.org/2000/svg",xhtml:Vt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function yt(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Qt.hasOwnProperty(e)?{space:Qt[e],local:t}:t}function Tt(t){return function(){this.removeAttribute(t)}}function Mt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function gt(t,e){return function(){this.setAttribute(t,e)}}function Et(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Gt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Bt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Jt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function kt(t){return function(){this.style.removeProperty(t)}}function Yt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Ct(t,e,n){return function(){var l=e.apply(this,arguments);null==l?this.style.removeProperty(t):this.style.setProperty(t,l,n)}}function Xt(t,e){return t.style.getPropertyValue(e)||Jt(t).getComputedStyle(t,null).getPropertyValue(e)}function It(t){return function(){delete this[t]}}function Dt(t,e){return function(){this[t]=e}}function ft(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Lt(t){return t.trim().split(/^|\s+/)}function wt(t){return t.classList||new xt(t)}function xt(t){this._node=t,this._names=Lt(t.getAttribute("class")||"")}function zt(t,e){for(var n=wt(t),l=-1,i=e.length;++l=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ce={},de=null;function ue(t,e,n){return t=he(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function he(t,e,n){return function(l){var i=de;de=l;try{t.call(this,this.__data__,e,n)}finally{de=i}}}function me(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Ue(t){return function(){var e=this.__on;if(e){for(var n,l=0,i=-1,a=e.length;l=S&&(S=R+1);!(N=b[S])&&++S=0;)(l=i[a])&&(s&&4^l.compareDocumentPosition(s)&&s.parentNode.insertBefore(l,s),s=l);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Wt);for(var n=this._groups,l=n.length,i=new Array(l),a=0;a1?this.each((null==e?kt:"function"==typeof e?Ct:Yt)(t,e,null==n?"":n)):Xt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?It:"function"==typeof e?ft:Dt)(t,e)):this.node()[t]},classed:function(t,e){var n=Lt(t+"");if(arguments.length<2){for(var l=wt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Pe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Pe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=De.exec(t))?new qe(e[1],e[2],e[3],1):(e=fe.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?Pe(e[1],e[2],e[3],e[4]):(e=we.exec(t))?Pe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=xe.exec(t))?nn(e[1],e[2]/100,e[3]/100,1):(e=ze.exec(t))?nn(e[1],e[2]/100,e[3]/100,e[4]):ve.hasOwnProperty(t)?Ke(ve[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ke(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Pe(t,e,n,l){return l<=0&&(t=e=n=NaN),new qe(t,e,n,l)}function Ae(t){return t instanceof Be||(t=je(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function He(t,e,n,l){return 1===arguments.length?Ae(t):new qe(t,e,n,null==l?1:l)}function qe(t,e,n,l){this.r=+t,this.g=+e,this.b=+n,this.opacity=+l}function $e(){return"#"+en(this.r)+en(this.g)+en(this.b)}function tn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function en(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function nn(t,e,n,l){return l<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new sn(t,e,n,l)}function ln(t){if(t instanceof sn)return new sn(t.h,t.s,t.l,t.opacity);if(t instanceof Be||(t=je(t)),!t)return new sn;if(t instanceof sn)return t;var e=(t=t.rgb()).r/255,n=t.g/255,l=t.b/255,i=Math.min(e,n,l),a=Math.max(e,n,l),s=NaN,r=a-i,o=(a+i)/2;return r?(s=e===a?(n-l)/r+6*(n0&&o<1?0:s,new sn(s,r,o,t.opacity)}function an(t,e,n,l){return 1===arguments.length?ln(t):new sn(t,e,n,null==l?1:l)}function sn(t,e,n,l){this.h=+t,this.s=+e,this.l=+n,this.opacity=+l}function rn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function on(t,e,n,l,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*l+s*i)/6}function cn(t){var e=t.length-1;return function(n){var l=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[l],a=t[l+1],s=l>0?t[l-1]:2*i-a,r=l180||n<-180?n-360*Math.round(n/360):n):un(isNaN(t)?e:t)}function Un(t,e){var n=e-t;return n?hn(t,n):un(isNaN(t)?e:t)}Ee(Be,je,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHsl:function(){return ln(this).formatHsl()},formatRgb:_e,toString:_e}),Ee(qe,He,Ge(Be,{brighter:function(t){return t=null==t?ke:Math.pow(ke,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Je:Math.pow(Je,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$e,formatHex:$e,formatRgb:tn,toString:tn})),Ee(sn,an,Ge(Be,{brighter:function(t){return t=null==t?ke:Math.pow(ke,t),new sn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Je:Math.pow(Je,t),new sn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,l=n+(n<.5?n:1-n)*e,i=2*n-l;return new qe(rn(t>=240?t-240:t+120,i,l),rn(t,i,l),rn(t<120?t+240:t-120,i,l),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const pn=function t(e){var n=function(t){return 1==(t=+t)?Un:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(l){return Math.pow(t+l*e,n)}}(e,n,t):un(isNaN(e)?n:e)}}(e);function l(t,e){var l=n((t=He(t)).r,(e=He(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=Un(t.opacity,e.opacity);return function(e){return t.r=l(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return l.gamma=t,l}(1);function Fn(t){return function(e){var n,l,i=e.length,a=new Array(i),s=new Array(i),r=new Array(i);for(n=0;na&&(i=e.slice(a,i),r[s]?r[s]+=i:r[++s]=i),(n=n[0])===(l=l[0])?r[s]?r[s]+=l:r[++s]=l:(r[++s]=null,o.push({i:s,x:Qn(n,l)})),a=Mn.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Xn}function Pn(){Ln=(fn=xn.now())+wn,Xn=In=0;try{Kn()}finally{Xn=0,function(){for(var t,e,n=Yn,l=1/0;n;)n._call?(l>n._time&&(l=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Yn=e);Cn=t,Hn(l)}(),Ln=0}}function An(){var t=xn.now(),e=t-fn;e>1e3&&(wn-=e,fn=t)}function Hn(t){Xn||(In&&(In=clearTimeout(In)),t-Ln>24?(t<1/0&&(In=setTimeout(Pn,t-xn.now()-wn)),Dn&&(Dn=clearInterval(Dn))):(Dn||(fn=xn.now(),Dn=setInterval(An,1e3)),Xn=1,zn(Pn)))}function qn(t,e,n){var l=new _n;return e=null==e?0:+e,l.restart((function(n){l.stop(),t(n+e)}),e,n),l}_n.prototype=jn.prototype={constructor:_n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?vn():+n)+(null==e?0:+e),this._next||Cn===this||(Cn?Cn._next=this:Yn=this,Cn=this),this._call=t,this._time=n,Hn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Hn())}};var $n=ht("start","end","cancel","interrupt"),tl=[];function el(t,e,n,l,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var l,i=t.__transition;function a(o){var c,d,u,h;if(1!==n.state)return r();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return qn(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c0)throw new Error("too late; already scheduled");return n}function ll(t,e){var n=il(t,e);if(n.state>3)throw new Error("too late; already running");return n}function il(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function al(t,e){var n,l,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(l=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(l?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):s=!1;s&&delete t.__transition}}var sl,rl,ol,cl,dl=180/Math.PI,ul={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function hl(t,e,n,l,i,a){var s,r,o;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(o=t*n+e*l)&&(n-=t*o,l-=e*o),(r=Math.sqrt(n*n+l*l))&&(n/=r,l/=r,o/=r),t*l180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,l)-2,x:Qn(t,e)})):e&&n.push(i(n)+"rotate("+e+l)}(a.rotate,s.rotate,r,o),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,l)-2,x:Qn(t,e)}):e&&n.push(i(n)+"skewX("+e+l)}(a.skewX,s.skewX,r,o),function(t,e,n,l,a,s){if(t!==n||e!==l){var r=a.push(i(a)+"scale(",null,",",null,")");s.push({i:r-4,x:Qn(t,n)},{i:r-2,x:Qn(e,l)})}else 1===n&&1===l||a.push(i(a)+"scale("+n+","+l+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,r,o),a=s=null,function(t){for(var e,n=-1,l=o.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?nl:ll;return function(){var s=a(this,t),r=s.on;r!==l&&(i=(l=r).copy()).on(e,n),s.on=i}}var Xl=Ve.prototype.constructor;function Il(t){return function(){this.style.removeProperty(t)}}function Dl(t,e,n){return function(l){this.style.setProperty(t,e.call(this,l),n)}}function fl(t,e,n){var l,i;function a(){var a=e.apply(this,arguments);return a!==i&&(l=(i=a)&&Dl(t,a,n)),l}return a._value=e,a}function Ll(t){return function(e){this.textContent=t.call(this,e)}}function wl(t){var e,n;function l(){var l=t.apply(this,arguments);return l!==n&&(e=(n=l)&&Ll(l)),e}return l._value=t,l}var xl=0;function zl(t,e,n,l){this._groups=t,this._parents=e,this._name=n,this._id=l}function vl(t){return Ve().transition(t)}function Ol(){return++xl}var _l=Ve.prototype;function jl(t){return t*t*t}function Kl(t){return--t*t*t+1}function Pl(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}zl.prototype=vl.prototype={constructor:zl,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Ut(t));for(var l=this._groups,i=l.length,a=new Array(i),s=0;s1&&n.name===e)return new zl([[t]],ql,e,+l);return null}function ti(t){return function(){return t}}function ei(t,e,n){this.target=t,this.type=e,this.selection=n}function ni(){de.stopImmediatePropagation()}function li(){de.preventDefault(),de.stopImmediatePropagation()}var ii={name:"drag"},ai={name:"space"},si={name:"handle"},ri={name:"center"};function oi(t){return[+t[0],+t[1]]}function ci(t){return[oi(t[0]),oi(t[1])]}function di(t){return function(e){return Jn(e,de.touches,t)}}var ui={name:"x",handles:["w","e"].map(Ni),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},hi={name:"y",handles:["n","s"].map(Ni),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},mi={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(Ni),input:function(t){return null==t?null:ci(t)},output:function(t){return t}},Ui={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},pi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Fi={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},bi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Zi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function Ni(t){return{type:t}}function Ri(){return!de.ctrlKey&&!de.button}function Si(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Wi(){return navigator.maxTouchPoints||"ontouchstart"in this}function Vi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Qi(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function yi(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function Ti(){return Ei(ui)}function Mi(){return Ei(hi)}function gi(){return Ei(mi)}function Ei(t){var e,n=Si,l=Ri,i=Wi,a=!0,s=ht("start","brush","end"),r=6;function o(e){var n=e.property("__brush",p).selectAll(".overlay").data([Ni("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Ui.overlay).merge(n).each((function(){var t=Vi(this).extent;Qe(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([Ni("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Ui.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var l=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));l.exit().remove(),l.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return Ui[t.type]})),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",m).on("touchend.brush touchcancel.brush",U).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=Qe(this),e=Vi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-r/2:e[0][0]-r/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-r/2:e[0][1]-r/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+r:r})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+r:r}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function d(t,e,n){var l=t.__brush.emitter;return!l||n&&l.clean?new u(t,e,n):l}function u(t,e,n){this.that=t,this.args=e,this.state=t.__brush,this.active=0,this.clean=n}function h(){if((!e||de.touches)&&l.apply(this,arguments)){var n,i,s,r,o,u,h,m,U,p,F,b=this,Z=de.target.__data__.type,N="selection"===(a&&de.metaKey?Z="overlay":Z)?ii:a&&de.altKey?ri:si,R=t===hi?null:bi[Z],S=t===ui?null:Zi[Z],W=Vi(b),V=W.extent,Q=W.selection,y=V[0][0],T=V[0][1],M=V[1][0],g=V[1][1],E=0,G=0,B=R&&S&&a&&de.shiftKey,J=de.touches?di(de.changedTouches[0].identifier):kn,k=J(b),Y=k,C=d(b,arguments,!0).beforestart();"overlay"===Z?(Q&&(U=!0),W.selection=Q=[[n=t===hi?y:k[0],s=t===ui?T:k[1]],[o=t===hi?M:n,h=t===ui?g:s]]):(n=Q[0][0],s=Q[0][1],o=Q[1][0],h=Q[1][1]),i=n,r=s,u=o,m=h;var X=Qe(b).attr("pointer-events","none"),I=X.selectAll(".overlay").attr("cursor",Ui[Z]);if(de.touches)C.moved=f,C.ended=w;else{var D=Qe(de.view).on("mousemove.brush",f,!0).on("mouseup.brush",w,!0);a&&D.on("keydown.brush",x,!0).on("keyup.brush",z,!0),Me(de.view)}ni(),al(b),c.call(b),C.start()}function f(){var t=J(b);!B||p||F||(Math.abs(t[0]-Y[0])>Math.abs(t[1]-Y[1])?F=!0:p=!0),Y=t,U=!0,li(),L()}function L(){var t;switch(E=Y[0]-k[0],G=Y[1]-k[1],N){case ai:case ii:R&&(E=Math.max(y-n,Math.min(M-o,E)),i=n+E,u=o+E),S&&(G=Math.max(T-s,Math.min(g-h,G)),r=s+G,m=h+G);break;case si:R<0?(E=Math.max(y-n,Math.min(M-n,E)),i=n+E,u=o):R>0&&(E=Math.max(y-o,Math.min(M-o,E)),i=n,u=o+E),S<0?(G=Math.max(T-s,Math.min(g-s,G)),r=s+G,m=h):S>0&&(G=Math.max(T-h,Math.min(g-h,G)),r=s,m=h+G);break;case ri:R&&(i=Math.max(y,Math.min(M,n-E*R)),u=Math.max(y,Math.min(M,o+E*R))),S&&(r=Math.max(T,Math.min(g,s-G*S)),m=Math.max(T,Math.min(g,h+G*S)))}u0&&(n=i-E),S<0?h=m-G:S>0&&(s=r-G),N=ai,I.attr("cursor",Ui.selection),L());break;default:return}li()}function z(){switch(de.keyCode){case 16:B&&(p=F=B=!1,L());break;case 18:N===ri&&(R<0?o=u:R>0&&(n=i),S<0?h=m:S>0&&(s=r),N=si,L());break;case 32:N===ai&&(de.altKey?(R&&(o=u-E*R,n=i+E*R),S&&(h=m-G*S,s=r+G*S),N=ri):(R<0?o=u:R>0&&(n=i),S<0?h=m:S>0&&(s=r),N=si),I.attr("cursor",Ui[Z]),L());break;default:return}li()}}function m(){d(this,arguments).moved()}function U(){d(this,arguments).ended()}function p(){var e=this.__brush||{selection:null};return e.extent=ci(n.apply(this,arguments)),e.dim=t,e}return o.move=function(e,n){e.selection?e.on("start.brush",(function(){d(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){d(this,arguments).end()})).tween("brush",(function(){var e=this,l=e.__brush,i=d(e,arguments),a=l.selection,s=t.input("function"==typeof n?n.apply(this,arguments):n,l.extent),r=En(a,s);function o(t){l.selection=1===t&&null===s?null:r(t),c.call(e),i.brush()}return null!==a&&null!==s?o:o(1)})):e.each((function(){var e=this,l=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,l):n,i.extent),s=d(e,l).beforestart();al(e),i.selection=null===a?null:a,c.call(e),s.start().brush().end()}))},o.clear=function(t){o.move(t,null)},u.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){Fe(new ei(o,e,t.output(this.state.selection)),s.apply,s,[e,this.that,this.args])}},o.extent=function(t){return arguments.length?(n="function"==typeof t?t:ti(ci(t)),o):n},o.filter=function(t){return arguments.length?(l="function"==typeof t?t:ti(!!t),o):l},o.touchable=function(t){return arguments.length?(i="function"==typeof t?t:ti(!!t),o):i},o.handleSize=function(t){return arguments.length?(r=+t,o):r},o.keyModifiers=function(t){return arguments.length?(a=!!t,o):a},o.on=function(){var t=s.on.apply(s,arguments);return t===s?o:t},o}var Gi=Math.cos,Bi=Math.sin,Ji=Math.PI,ki=Ji/2,Yi=2*Ji,Ci=Math.max;function Xi(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}function Ii(){var t=0,e=null,n=null,l=null;function i(i){var a,s,r,o,c,d,u=i.length,h=[],m=V(u),U=[],p=[],F=p.groups=new Array(u),b=new Array(u*u);for(a=0,c=-1;++cxi)if(Math.abs(d*r-o*c)>xi&&i){var h=n-a,m=l-s,U=r*r+o*o,p=h*h+m*m,F=Math.sqrt(U),b=Math.sqrt(u),Z=i*Math.tan((Li-Math.acos((U+u-p)/(2*F*b)))/2),N=Z/b,R=Z/F;Math.abs(N-1)>xi&&(this._+="L"+(t+N*c)+","+(e+N*d)),this._+="A"+i+","+i+",0,0,"+ +(d*h>c*m)+","+(this._x1=t+R*r)+","+(this._y1=e+R*o)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,l,i,a){t=+t,e=+e,a=!!a;var s=(n=+n)*Math.cos(l),r=n*Math.sin(l),o=t+s,c=e+r,d=1^a,u=a?l-i:i-l;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+o+","+c:(Math.abs(this._x1-o)>xi||Math.abs(this._y1-c)>xi)&&(this._+="L"+o+","+c),n&&(u<0&&(u=u%wi+wi),u>zi?this._+="A"+n+","+n+",0,1,"+d+","+(t-s)+","+(e-r)+"A"+n+","+n+",0,1,"+d+","+(this._x1=o)+","+(this._y1=c):u>xi&&(this._+="A"+n+","+n+",0,"+ +(u>=Li)+","+d+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +l+"h"+-n+"Z"},toString:function(){return this._}};const _i=Oi;function ji(t){return t.source}function Ki(t){return t.target}function Pi(t){return t.radius}function Ai(t){return t.startAngle}function Hi(t){return t.endAngle}function qi(){var t=ji,e=Ki,n=Pi,l=Ai,i=Hi,a=null;function s(){var s,r=Di.call(arguments),o=t.apply(this,r),c=e.apply(this,r),d=+n.apply(this,(r[0]=o,r)),u=l.apply(this,r)-ki,h=i.apply(this,r)-ki,m=d*Gi(u),U=d*Bi(u),p=+n.apply(this,(r[0]=c,r)),F=l.apply(this,r)-ki,b=i.apply(this,r)-ki;if(a||(a=s=_i()),a.moveTo(m,U),a.arc(0,0,d,u,h),u===F&&h===b||(a.quadraticCurveTo(0,0,p*Gi(F),p*Bi(F)),a.arc(0,0,p,F,b)),a.quadraticCurveTo(0,0,m,U),a.closePath(),s)return a=null,s+""||null}return s.radius=function(t){return arguments.length?(n="function"==typeof t?t:fi(+t),s):n},s.startAngle=function(t){return arguments.length?(l="function"==typeof t?t:fi(+t),s):l},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fi(+t),s):i},s.source=function(e){return arguments.length?(t=e,s):t},s.target=function(t){return arguments.length?(e=t,s):e},s.context=function(t){return arguments.length?(a=null==t?null:t,s):a},s}var $i="$";function ta(){}function ea(t,e){var n=new ta;if(t instanceof ta)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var l,i=-1,a=t.length;if(null==e)for(;++i=l.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var o,c,d,u=-1,h=n.length,m=l[i++],U=na(),p=s();++ul.length)return t;var a,r=i[n-1];return null!=e&&n>=l.length?a=t.entries():(a=[],t.each((function(t,e){a.push({key:e,values:s(t,n)})}))),null!=r?a.sort((function(t,e){return r(t.key,e.key)})):a}return n={object:function(t){return a(t,0,ia,aa)},map:function(t){return a(t,0,sa,ra)},entries:function(t){return s(a(t,0,sa,ra),0)},key:function(t){return l.push(t),n},sortKeys:function(t){return i[l.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}}function ia(){return{}}function aa(t,e,n){t[e]=n}function sa(){return na()}function ra(t,e,n){t.set(e,n)}function oa(){}var ca=na.prototype;function da(t,e){var n=new oa;if(t instanceof oa)t.each((function(t){n.add(t)}));else if(t){var l=-1,i=t.length;if(null==e)for(;++l.008856451679035631?Math.pow(t,1/3):t/Sa+Na}function Ma(t){return t>Ra?t*t*t:Sa*(t-Na)}function ga(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ea(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ga(t){if(t instanceof ka)return new ka(t.h,t.c,t.l,t.opacity);if(t instanceof ya||(t=Wa(t)),0===t.a&&0===t.b)return new ka(NaN,0l!=m>l&&n<(h-c)*(l-d)/(m-d)+c&&(i=-i)}return i}function Ha(t,e,n){var l,i,a,s;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[l=+(t[0]===e[0])],a=n[l],s=e[l],i<=a&&a<=s||s<=a&&a<=i)}function qa(){}var $a=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function ts(){var t=1,e=1,n=G,l=r;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(ja);else{var l=b(t),i=l[0],s=l[1];e=E(i,s,e),e=V(Math.floor(i/e)*e,Math.floor(s/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],r=[];return function(n,l,i){var a,r,o,c,d,u,h=new Array,m=new Array;for(a=r=-1,c=n[0]>=l,$a[c<<1].forEach(U);++a=l,$a[o|c<<1].forEach(U);for($a[c|0].forEach(U);++r=l,d=n[r*t]>=l,$a[c<<1|d<<2].forEach(U);++a=l,u=d,d=n[r*t+a+1]>=l,$a[o|c<<1|d<<2|u<<3].forEach(U);$a[c|d<<3].forEach(U)}for(a=-1,d=n[r*t]>=l,$a[d<<2].forEach(U);++a=l,$a[d<<2|u<<3].forEach(U);function U(t){var e,n,l=[t[0][0]+a,t[0][1]+r],o=[t[1][0]+a,t[1][1]+r],c=s(l),d=s(o);(e=m[c])?(n=h[d])?(delete m[e.end],delete h[n.start],e===n?(e.ring.push(o),i(e.ring)):h[e.start]=m[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete m[e.end],e.ring.push(o),m[e.end=d]=e):(e=h[d])?(n=m[c])?(delete h[e.start],delete m[n.end],e===n?(e.ring.push(o),i(e.ring)):h[n.start]=m[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(l),h[e.start=c]=e):h[c]=m[d]={start:c,end:d,ring:[l,o]}}$a[d<<3].forEach(U)}(n,i,(function(t){l(t,n,i),function(t){for(var e=0,n=t.length,l=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):r.push(t)})),r.forEach((function(t){for(var e,n=0,l=a.length;n0&&s0&&r0&&a>0))throw new Error("invalid size");return t=l,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Ka(_a.call(t)):Ka(t),i):n},i.smooth=function(t){return arguments.length?(l=t?r:qa,i):l===r},i}function es(t,e,n){for(var l=t.width,i=t.height,a=1+(n<<1),s=0;s=n&&(r>=a&&(o-=t.data[r-a+s*l]),e.data[r-n+s*l]=o/Math.min(r+1,l-1+a-r,a))}function ns(t,e,n){for(var l=t.width,i=t.height,a=1+(n<<1),s=0;s=n&&(r>=a&&(o-=t.data[s+(r-a)*l]),e.data[s+(r-n)*l]=o/Math.min(r+1,i-1+a-r,a))}function ls(t){return t[0]}function is(t){return t[1]}function as(){return 1}function ss(){var t=ls,e=is,n=as,l=960,i=500,a=20,s=2,r=3*a,o=l+2*r>>s,c=i+2*r>>s,d=Ka(20);function u(l){var i=new Float32Array(o*c),u=new Float32Array(o*c);l.forEach((function(l,a,d){var u=+t(l,a,d)+r>>s,h=+e(l,a,d)+r>>s,m=+n(l,a,d);u>=0&&u=0&&h>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s),es({width:o,height:c,data:i},{width:o,height:c,data:u},a>>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s),es({width:o,height:c,data:i},{width:o,height:c,data:u},a>>s),ns({width:o,height:c,data:u},{width:o,height:c,data:i},a>>s);var m=d(i);if(!Array.isArray(m)){var U=C(i);m=E(0,U,m),(m=V(0,Math.floor(U/m)*m,m)).shift()}return ts().thresholds(m).size([o,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*s),t.coordinates.forEach(m),t}function m(t){t.forEach(U)}function U(t){t.forEach(p)}function p(t){t[0]=t[0]*Math.pow(2,s)-r,t[1]=t[1]*Math.pow(2,s)-r}function F(){return o=l+2*(r=3*a)>>s,c=i+2*r>>s,u}return u.x=function(e){return arguments.length?(t="function"==typeof e?e:Ka(+e),u):t},u.y=function(t){return arguments.length?(e="function"==typeof t?t:Ka(+t),u):e},u.weight=function(t){return arguments.length?(n="function"==typeof t?t:Ka(+t),u):n},u.size=function(t){if(!arguments.length)return[l,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return l=e,i=n,F()},u.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return s=Math.floor(Math.log(t)/Math.LN2),F()},u.thresholds=function(t){return arguments.length?(d="function"==typeof t?t:Array.isArray(t)?Ka(_a.call(t)):Ka(t),u):d},u.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),F()},u}function rs(t){return function(){return t}}function os(t,e,n,l,i,a,s,r,o,c){this.target=t,this.type=e,this.subject=n,this.identifier=l,this.active=i,this.x=a,this.y=s,this.dx=r,this.dy=o,this._=c}function cs(){return!de.ctrlKey&&!de.button}function ds(){return this.parentNode}function us(t){return null==t?{x:de.x,y:de.y}:t}function hs(){return navigator.maxTouchPoints||"ontouchstart"in this}function ms(){var t,e,n,l,i=cs,a=ds,s=us,r=hs,o={},c=ht("start","drag","end"),d=0,u=0;function h(t){t.on("mousedown.drag",m).filter(r).on("touchstart.drag",F).on("touchmove.drag",b).on("touchend.drag touchcancel.drag",Z).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(){if(!l&&i.apply(this,arguments)){var s=N("mouse",a.apply(this,arguments),kn,this,arguments);s&&(Qe(de.view).on("mousemove.drag",U,!0).on("mouseup.drag",p,!0),Me(de.view),ye(),n=!1,t=de.clientX,e=de.clientY,s("start"))}}function U(){if(Te(),!n){var l=de.clientX-t,i=de.clientY-e;n=l*l+i*i>u}o.mouse("drag")}function p(){Qe(de.view).on("mousemove.drag mouseup.drag",null),ge(de.view,n),Te(),o.mouse("end")}function F(){if(i.apply(this,arguments)){var t,e,n=de.changedTouches,l=a.apply(this,arguments),s=n.length;for(t=0;t=a?o=!0:10===(l=t.charCodeAt(s++))?c=!0:13===l&&(c=!0,10===t.charCodeAt(s)&&++s),t.slice(i+1,e-1).replace(/""/g,'"')}for(;s9999?"+"+Zs(t,6):Zs(t,4)}(t.getUTCFullYear())+"-"+Zs(t.getUTCMonth()+1,2)+"-"+Zs(t.getUTCDate(),2)+(i?"T"+Zs(e,2)+":"+Zs(n,2)+":"+Zs(l,2)+"."+Zs(i,3)+"Z":l?"T"+Zs(e,2)+":"+Zs(n,2)+":"+Zs(l,2)+"Z":n||e?"T"+Zs(e,2)+":"+Zs(n,2)+"Z":"")}(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,a=l(t,(function(t,l){if(n)return n(t,l-1);i=t,n=e?function(t,e){var n=Fs(t);return function(l,i){return e(n(l),i,t)}}(t,e):Fs(t)}));return a.columns=i||[],a},parseRows:l,format:function(e,n){return null==n&&(n=bs(e)),[n.map(s).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=bs(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(a).join("\n")},formatRow:a,formatValue:s}}var Rs=Ns(","),Ss=Rs.parse,Ws=Rs.parseRows,Vs=Rs.format,Qs=Rs.formatBody,ys=Rs.formatRows,Ts=Rs.formatRow,Ms=Rs.formatValue,gs=Ns("\t"),Es=gs.parse,Gs=gs.parseRows,Bs=gs.format,Js=gs.formatBody,ks=gs.formatRows,Ys=gs.formatRow,Cs=gs.formatValue;function Xs(t){for(var e in t){var n,l,i=t[e].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(n=+i)){if(!(l=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Is&&l[4]&&!l[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=n;else i=null;t[e]=i}return t}var Is=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Ds(t){return+t}function fs(t){return t*t}function Ls(t){return t*(2-t)}function ws(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}var xs=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),zs=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),vs=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),Os=Math.PI,_s=Os/2;function js(t){return 1==+t?1:1-Math.cos(t*_s)}function Ks(t){return Math.sin(t*_s)}function Ps(t){return(1-Math.cos(Os*t))/2}function As(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Hs(t){return As(1-+t)}function qs(t){return 1-As(t)}function $s(t){return((t*=2)<=1?As(1-t):2-As(t-1))/2}function tr(t){return 1-Math.sqrt(1-t*t)}function er(t){return Math.sqrt(1- --t*t)}function nr(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var lr=7.5625;function ir(t){return 1-ar(1-t)}function ar(t){return(t=+t)<.36363636363636365?lr*t*t:t<.7272727272727273?lr*(t-=.5454545454545454)*t+.75:t<.9090909090909091?lr*(t-=.8181818181818182)*t+.9375:lr*(t-=.9545454545454546)*t+.984375}function sr(t){return((t*=2)<=1?1-ar(1-t):ar(t-1)+1)/2}var rr=1.70158,or=function t(e){function n(t){return(t=+t)*t*(e*(t-1)+t)}return e=+e,n.overshoot=t,n}(rr),cr=function t(e){function n(t){return--t*t*((t+1)*e+t)+1}return e=+e,n.overshoot=t,n}(rr),dr=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(rr),ur=2*Math.PI,hr=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return e*As(- --t)*Math.sin((l-t)/n)}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3),mr=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return 1-e*As(t=+t)*Math.sin((t+l)/n)}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3),Ur=function t(e,n){var l=Math.asin(1/(e=Math.max(1,e)))*(n/=ur);function i(t){return((t=2*t-1)<0?e*As(-t)*Math.sin((l-t)/n):2-e*As(t)*Math.sin((l+t)/n))/2}return i.amplitude=function(e){return t(e,n*ur)},i.period=function(n){return t(e,n)},i}(1,.3);function pr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function Fr(t,e){return fetch(t,e).then(pr)}function br(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function Zr(t,e){return fetch(t,e).then(br)}function Nr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function Rr(t,e){return fetch(t,e).then(Nr)}function Sr(t){return function(e,n,l){return 2===arguments.length&&"function"==typeof n&&(l=n,n=void 0),Rr(e,n).then((function(e){return t(e,l)}))}}function Wr(t,e,n,l){3===arguments.length&&"function"==typeof n&&(l=n,n=void 0);var i=Ns(t);return Rr(e,n).then((function(t){return i.parse(t,l)}))}var Vr=Sr(Ss),Qr=Sr(Es);function yr(t,e){return new Promise((function(n,l){var i=new Image;for(var a in e)i[a]=e[a];i.onerror=l,i.onload=function(){n(i)},i.src=t}))}function Tr(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Mr(t,e){return fetch(t,e).then(Tr)}function gr(t){return function(e,n){return Rr(e,n).then((function(e){return(new DOMParser).parseFromString(e,t)}))}}const Er=gr("application/xml");var Gr=gr("text/html"),Br=gr("image/svg+xml");function Jr(t,e){var n;function l(){var l,i,a=n.length,s=0,r=0;for(l=0;l=(a=(p+b)/2))?p=a:b=a,(d=n>=(s=(F+Z)/2))?F=s:Z=s,i=m,!(m=m[u=d<<1|c]))return i[u]=U,t;if(r=+t._x.call(null,m.data),o=+t._y.call(null,m.data),e===r&&n===o)return U.next=m,i?i[u]=U:t._root=U,t;do{i=i?i[u]=new Array(4):t._root=new Array(4),(c=e>=(a=(p+b)/2))?p=a:b=a,(d=n>=(s=(F+Z)/2))?F=s:Z=s}while((u=d<<1|c)==(h=(o>=s)<<1|r>=a));return i[h]=m,i[u]=U,t}function Xr(t,e,n,l,i){this.node=t,this.x0=e,this.y0=n,this.x1=l,this.y1=i}function Ir(t){return t[0]}function Dr(t){return t[1]}function fr(t,e,n){var l=new Lr(null==e?Ir:e,null==n?Dr:n,NaN,NaN,NaN,NaN);return null==t?l:l.addAll(t)}function Lr(t,e,n,l,i,a){this._x=t,this._y=e,this._x0=n,this._y0=l,this._x1=i,this._y1=a,this._root=void 0}function wr(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var xr=fr.prototype=Lr.prototype;function zr(t){return t.x+t.vx}function vr(t){return t.y+t.vy}function Or(t){var e,n,l=1,i=1;function a(){for(var t,a,r,o,c,d,u,h=e.length,m=0;mo+m||ic+m||ar.index){var U=o-s.x-s.vx,p=c-s.y-s.vy,F=U*U+p*p;Ft.r&&(t.r=t[e].r)}function r(){if(e){var l,i,a=e.length;for(n=new Array(a),l=0;ld&&(d=l),iu&&(u=i));if(o>d||c>u)return this;for(this.cover(o,c).cover(d,u),n=0;nt||t>=i||l>e||e>=a;)switch(r=(eh||(a=o.y0)>m||(s=o.x1)=b)<<1|t>=F)&&(o=U[U.length-1],U[U.length-1]=U[U.length-1-c],U[U.length-1-c]=o)}else{var Z=t-+this._x.call(null,p.data),N=e-+this._y.call(null,p.data),R=Z*Z+N*N;if(R=(r=(U+F)/2))?U=r:F=r,(d=s>=(o=(p+b)/2))?p=o:b=o,e=m,!(m=m[u=d<<1|c]))return this;if(!m.length)break;(e[u+1&3]||e[u+2&3]||e[u+3&3])&&(n=e,h=u)}for(;m.data!==t;)if(l=m,!(m=m.next))return this;return(i=m.next)&&delete m.next,l?(i?l.next=i:delete l.next,this):e?(i?e[u]=i:delete e[u],(m=e[0]||e[1]||e[2]||e[3])&&m===(e[3]||e[2]||e[1]||e[0])&&!m.length&&(n?n[h]=m:this._root=m),this):(this._root=i,this)},xr.removeAll=function(t){for(var e=0,n=t.length;e1?(null==n?r.remove(t):r.set(t,m(n)),e):r.get(t)},find:function(e,n,l){var i,a,s,r,o,c=0,d=t.length;for(null==l?l=1/0:l*=l,c=0;c1?(c.on(t,n),e):c.on(t)}}}function $r(){var t,e,n,l,i=kr(-30),a=1,s=1/0,r=.81;function o(l){var i,a=t.length,s=fr(t,Pr,Ar).visitAfter(d);for(n=l,i=0;i=s)){(t.data!==e||t.next)&&(0===d&&(m+=(d=Yr())*d),0===u&&(m+=(u=Yr())*u),m1?l[0]+l.slice(2):l,+t.slice(n+1)]}function io(t){return(t=lo(Math.abs(t)))?t[1]:NaN}var ao,so=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ro(t){if(!(e=so.exec(t)))throw new Error("invalid format: "+t);var e;return new oo({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function oo(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function co(t,e){var n=lo(t,e);if(!n)return t+"";var l=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+l:l.length>i+1?l.slice(0,i+1)+"."+l.slice(i+1):l+new Array(i-l.length+2).join("0")}ro.prototype=oo.prototype,oo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const uo={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return co(100*t,e)},r:co,s:function(t,e){var n=lo(t,e);if(!n)return t+"";var l=n[0],i=n[1],a=i-(ao=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=l.length;return a===s?l:a>s?l+new Array(a-s+1).join("0"):a>0?l.slice(0,a)+"."+l.slice(a):"0."+new Array(1-a).join("0")+lo(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ho(t){return t}var mo,Uo,po,Fo=Array.prototype.map,bo=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Zo(t){var e,n,l=void 0===t.grouping||void 0===t.thousands?ho:(e=Fo.call(t.grouping,Number),n=t.thousands+"",function(t,l){for(var i=t.length,a=[],s=0,r=e[0],o=0;i>0&&r>0&&(o+r+1>l&&(r=Math.max(1,l-o)),a.push(t.substring(i-=r,i+r)),!((o+=r+1)>l));)r=e[s=(s+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",r=void 0===t.numerals?ho:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Fo.call(t.numerals,String)),o=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"-":t.minus+"",d=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=ro(t)).fill,n=t.align,u=t.sign,h=t.symbol,m=t.zero,U=t.width,p=t.comma,F=t.precision,b=t.trim,Z=t.type;"n"===Z?(p=!0,Z="g"):uo[Z]||(void 0===F&&(F=12),b=!0,Z="g"),(m||"0"===e&&"="===n)&&(m=!0,e="0",n="=");var N="$"===h?i:"#"===h&&/[boxX]/.test(Z)?"0"+Z.toLowerCase():"",R="$"===h?a:/[%p]/.test(Z)?o:"",S=uo[Z],W=/[defgprs%]/.test(Z);function V(t){var i,a,o,h=N,V=R;if("c"===Z)V=S(t)+V,t="";else{var Q=(t=+t)<0||1/t<0;if(t=isNaN(t)?d:S(Math.abs(t),F),b&&(t=function(t){t:for(var e,n=t.length,l=1,i=-1;l0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),Q&&0==+t&&"+"!==u&&(Q=!1),h=(Q?"("===u?u:c:"-"===u||"("===u?"":u)+h,V=("s"===Z?bo[8+ao/3]:"")+V+(Q&&"("===u?")":""),W)for(i=-1,a=t.length;++i(o=t.charCodeAt(i))||o>57){V=(46===o?s+t.slice(i+1):t.slice(i))+V,t=t.slice(0,i);break}}p&&!m&&(t=l(t,1/0));var y=h.length+t.length+V.length,T=y>1)+h+t+V+T.slice(y);break;default:t=T+h+t+V}return r(t)}return F=void 0===F?6:/[gprs]/.test(Z)?Math.max(1,Math.min(21,F)):Math.max(0,Math.min(20,F)),V.toString=function(){return t+""},V}return{format:u,formatPrefix:function(t,e){var n=u(((t=ro(t)).type="f",t)),l=3*Math.max(-8,Math.min(8,Math.floor(io(e)/3))),i=Math.pow(10,-l),a=bo[8+l/3];return function(t){return n(i*t)+a}}}}function No(t){return mo=Zo(t),Uo=mo.format,po=mo.formatPrefix,mo}function Ro(t){return Math.max(0,-io(Math.abs(t)))}function So(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(io(e)/3)))-io(Math.abs(t)))}function Wo(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,io(e)-io(t))+1}function Vo(){return new Qo}function Qo(){this.reset()}No({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Qo.prototype={constructor:Qo,reset:function(){this.s=this.t=0},add:function(t){To(yo,t,this.t),To(this,yo.s,this.s),this.s?this.t+=yo.t:this.s=yo.t},valueOf:function(){return this.s}};var yo=new Qo;function To(t,e,n){var l=t.s=e+n,i=l-e,a=l-i;t.t=e-a+(n-i)}var Mo=1e-6,go=1e-12,Eo=Math.PI,Go=Eo/2,Bo=Eo/4,Jo=2*Eo,ko=180/Eo,Yo=Eo/180,Co=Math.abs,Xo=Math.atan,Io=Math.atan2,Do=Math.cos,fo=Math.ceil,Lo=Math.exp,wo=(Math.floor,Math.log),xo=Math.pow,zo=Math.sin,vo=Math.sign||function(t){return t>0?1:t<0?-1:0},Oo=Math.sqrt,_o=Math.tan;function jo(t){return t>1?0:t<-1?Eo:Math.acos(t)}function Ko(t){return t>1?Go:t<-1?-Go:Math.asin(t)}function Po(t){return(t=zo(t/2))*t}function Ao(){}function Ho(t,e){t&&$o.hasOwnProperty(t.type)&&$o[t.type](t,e)}var qo={Feature:function(t,e){Ho(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,l=-1,i=n.length;++l=0?1:-1,i=l*n,a=Do(e=(e*=Yo)/2+Bo),s=zo(e),r=rc*s,o=sc*a+r*Do(i),c=r*l*zo(i);oc.add(Io(c,o)),ac=t,sc=a,rc=s}function pc(t){return cc.reset(),nc(t,dc),2*cc}function Fc(t){return[Io(t[1],t[0]),Ko(t[2])]}function bc(t){var e=t[0],n=t[1],l=Do(n);return[l*Do(e),l*zo(e),zo(n)]}function Zc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Nc(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Rc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Sc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function Wc(t){var e=Oo(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var Vc,Qc,yc,Tc,Mc,gc,Ec,Gc,Bc,Jc,kc,Yc,Cc,Xc,Ic,Dc,fc,Lc,wc,xc,zc,vc,Oc,_c,jc,Kc,Pc=Vo(),Ac={point:Hc,lineStart:$c,lineEnd:td,polygonStart:function(){Ac.point=ed,Ac.lineStart=nd,Ac.lineEnd=ld,Pc.reset(),dc.polygonStart()},polygonEnd:function(){dc.polygonEnd(),Ac.point=Hc,Ac.lineStart=$c,Ac.lineEnd=td,oc<0?(Vc=-(yc=180),Qc=-(Tc=90)):Pc>Mo?Tc=90:Pc<-1e-6&&(Qc=-90),Jc[0]=Vc,Jc[1]=yc},sphere:function(){Vc=-(yc=180),Qc=-(Tc=90)}};function Hc(t,e){Bc.push(Jc=[Vc=t,yc=t]),eTc&&(Tc=e)}function qc(t,e){var n=bc([t*Yo,e*Yo]);if(Gc){var l=Nc(Gc,n),i=Nc([l[1],-l[0],0],l);Wc(i),i=Fc(i);var a,s=t-Mc,r=s>0?1:-1,o=i[0]*ko*r,c=Co(s)>180;c^(r*McTc&&(Tc=a):c^(r*Mc<(o=(o+360)%360-180)&&oTc&&(Tc=e)),c?tid(Vc,yc)&&(yc=t):id(t,yc)>id(Vc,yc)&&(Vc=t):yc>=Vc?(tyc&&(yc=t)):t>Mc?id(Vc,t)>id(Vc,yc)&&(yc=t):id(t,yc)>id(Vc,yc)&&(Vc=t)}else Bc.push(Jc=[Vc=t,yc=t]);eTc&&(Tc=e),Gc=n,Mc=t}function $c(){Ac.point=qc}function td(){Jc[0]=Vc,Jc[1]=yc,Ac.point=Hc,Gc=null}function ed(t,e){if(Gc){var n=t-Mc;Pc.add(Co(n)>180?n+(n>0?360:-360):n)}else gc=t,Ec=e;dc.point(t,e),qc(t,e)}function nd(){dc.lineStart()}function ld(){ed(gc,Ec),dc.lineEnd(),Co(Pc)>Mo&&(Vc=-(yc=180)),Jc[0]=Vc,Jc[1]=yc,Gc=null}function id(t,e){return(e-=t)<0?e+360:e}function ad(t,e){return t[0]-e[0]}function sd(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eid(l[0],l[1])&&(l[1]=i[1]),id(i[0],l[1])>id(l[0],l[1])&&(l[0]=i[0])):a.push(l=i);for(s=-1/0,e=0,l=a[n=a.length-1];e<=n;l=i,++e)i=a[e],(r=id(l[1],i[0]))>s&&(s=r,Vc=i[0],yc=l[1])}return Bc=Jc=null,Vc===1/0||Qc===1/0?[[NaN,NaN],[NaN,NaN]]:[[Vc,Qc],[yc,Tc]]}var od={sphere:Ao,point:cd,lineStart:ud,lineEnd:Ud,polygonStart:function(){od.lineStart=pd,od.lineEnd=Fd},polygonEnd:function(){od.lineStart=ud,od.lineEnd=Ud}};function cd(t,e){t*=Yo;var n=Do(e*=Yo);dd(n*Do(t),n*zo(t),zo(e))}function dd(t,e,n){++kc,Cc+=(t-Cc)/kc,Xc+=(e-Xc)/kc,Ic+=(n-Ic)/kc}function ud(){od.point=hd}function hd(t,e){t*=Yo;var n=Do(e*=Yo);_c=n*Do(t),jc=n*zo(t),Kc=zo(e),od.point=md,dd(_c,jc,Kc)}function md(t,e){t*=Yo;var n=Do(e*=Yo),l=n*Do(t),i=n*zo(t),a=zo(e),s=Io(Oo((s=jc*a-Kc*i)*s+(s=Kc*l-_c*a)*s+(s=_c*i-jc*l)*s),_c*l+jc*i+Kc*a);Yc+=s,Dc+=s*(_c+(_c=l)),fc+=s*(jc+(jc=i)),Lc+=s*(Kc+(Kc=a)),dd(_c,jc,Kc)}function Ud(){od.point=cd}function pd(){od.point=bd}function Fd(){Zd(vc,Oc),od.point=cd}function bd(t,e){vc=t,Oc=e,t*=Yo,e*=Yo,od.point=Zd;var n=Do(e);_c=n*Do(t),jc=n*zo(t),Kc=zo(e),dd(_c,jc,Kc)}function Zd(t,e){t*=Yo;var n=Do(e*=Yo),l=n*Do(t),i=n*zo(t),a=zo(e),s=jc*a-Kc*i,r=Kc*l-_c*a,o=_c*i-jc*l,c=Oo(s*s+r*r+o*o),d=Ko(c),u=c&&-d/c;wc+=u*s,xc+=u*r,zc+=u*o,Yc+=d,Dc+=d*(_c+(_c=l)),fc+=d*(jc+(jc=i)),Lc+=d*(Kc+(Kc=a)),dd(_c,jc,Kc)}function Nd(t){kc=Yc=Cc=Xc=Ic=Dc=fc=Lc=wc=xc=zc=0,nc(t,od);var e=wc,n=xc,l=zc,i=e*e+n*n+l*l;return iEo?t+Math.round(-t/Jo)*Jo:t,e]}function Vd(t,e,n){return(t%=Jo)?e||n?Sd(yd(t),Td(e,n)):yd(t):e||n?Td(e,n):Wd}function Qd(t){return function(e,n){return[(e+=t)>Eo?e-Jo:e<-Eo?e+Jo:e,n]}}function yd(t){var e=Qd(t);return e.invert=Qd(-t),e}function Td(t,e){var n=Do(t),l=zo(t),i=Do(e),a=zo(e);function s(t,e){var s=Do(e),r=Do(t)*s,o=zo(t)*s,c=zo(e),d=c*n+r*l;return[Io(o*i-d*a,r*n-c*l),Ko(d*i+o*a)]}return s.invert=function(t,e){var s=Do(e),r=Do(t)*s,o=zo(t)*s,c=zo(e),d=c*i-o*a;return[Io(o*i+c*a,r*n+d*l),Ko(d*n-r*l)]},s}function Md(t){function e(e){return(e=t(e[0]*Yo,e[1]*Yo))[0]*=ko,e[1]*=ko,e}return t=Vd(t[0]*Yo,t[1]*Yo,t.length>2?t[2]*Yo:0),e.invert=function(e){return(e=t.invert(e[0]*Yo,e[1]*Yo))[0]*=ko,e[1]*=ko,e},e}function gd(t,e,n,l,i,a){if(n){var s=Do(e),r=zo(e),o=l*n;null==i?(i=e+l*Jo,a=e-o/2):(i=Ed(s,i),a=Ed(s,a),(l>0?ia)&&(i+=l*Jo));for(var c,d=i;l>0?d>a:d1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function Jd(t,e){return Co(t[0]-e[0])=0;--a)i.point((d=c[a])[0],d[1]);else l(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,m=!m}while(!h.v);i.lineEnd()}}}function Cd(t){if(e=t.length){for(var e,n,l=0,i=t[0];++l=0?1:-1,y=Q*V,T=y>Eo,M=p*S;if(Xd.add(Io(M*Q*zo(y),F*W+M*Do(y))),s+=T?V+Q*Jo:V,T^m>=n^N>=n){var g=Nc(bc(h),bc(Z));Wc(g);var E=Nc(a,g);Wc(E);var G=(T^V>=0?-1:1)*Ko(E[2]);(l>G||l===G&&(g[0]||g[1]))&&(r+=T^V>=0?1:-1)}}return(s<-1e-6||s0){for(u||(i.polygonStart(),u=!0),i.lineStart(),t=0;t1&&2&o&&h.push(h.pop().concat(h.shift())),s.push(h.filter(Ld))}return h}}function Ld(t){return t.length>1}function wd(t,e){return((t=t.x)[0]<0?t[1]-Go-Mo:Go-t[1])-((e=e.x)[0]<0?e[1]-Go-Mo:Go-e[1])}const xd=fd((function(){return!0}),(function(t){var e,n=NaN,l=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,s){var r=a>0?Eo:-Eo,o=Co(a-n);Co(o-Eo)0?Go:-Go),t.point(i,l),t.lineEnd(),t.lineStart(),t.point(r,l),t.point(a,l),e=0):i!==r&&o>=Eo&&(Co(n-i)Mo?Xo((zo(e)*(a=Do(l))*zo(n)-zo(l)*(i=Do(e))*zo(t))/(i*a*s)):(e+l)/2}(n,l,a,s),t.point(i,l),t.lineEnd(),t.lineStart(),t.point(r,l),e=0),t.point(n=a,l=s),i=r},lineEnd:function(){t.lineEnd(),n=l=NaN},clean:function(){return 2-e}}}),(function(t,e,n,l){var i;if(null==t)i=n*Go,l.point(-Eo,i),l.point(0,i),l.point(Eo,i),l.point(Eo,0),l.point(Eo,-i),l.point(0,-i),l.point(-Eo,-i),l.point(-Eo,0),l.point(-Eo,i);else if(Co(t[0]-e[0])>Mo){var a=t[0]0,i=Co(e)>Mo;function a(t,n){return Do(t)*Do(n)>e}function s(t,n,l){var i=[1,0,0],a=Nc(bc(t),bc(n)),s=Zc(a,a),r=a[0],o=s-r*r;if(!o)return!l&&t;var c=e*s/o,d=-e*r/o,u=Nc(i,a),h=Sc(i,c);Rc(h,Sc(a,d));var m=u,U=Zc(h,m),p=Zc(m,m),F=U*U-p*(Zc(h,h)-1);if(!(F<0)){var b=Oo(F),Z=Sc(m,(-U-b)/p);if(Rc(Z,h),Z=Fc(Z),!l)return Z;var N,R=t[0],S=n[0],W=t[1],V=n[1];S0^Z[1]<(Co(Z[0]-R)Eo^(R<=Z[0]&&Z[0]<=S)){var T=Sc(m,(-U+b)/p);return Rc(T,h),[Z,Fc(T)]}}}function r(e,n){var i=l?t:Eo-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return fd(a,(function(t){var e,n,o,c,d;return{lineStart:function(){c=o=!1,d=1},point:function(u,h){var m,U=[u,h],p=a(u,h),F=l?p?0:r(u,h):p?r(u+(u<0?Eo:-Eo),h):0;if(!e&&(c=o=p)&&t.lineStart(),p!==o&&(!(m=s(e,U))||Jd(e,m)||Jd(U,m))&&(U[2]=1),p!==o)d=0,p?(t.lineStart(),m=s(U,e),t.point(m[0],m[1])):(m=s(e,U),t.point(m[0],m[1],2),t.lineEnd()),e=m;else if(i&&e&&l^p){var b;F&n||!(b=s(U,e,!0))||(d=0,l?(t.lineStart(),t.point(b[0][0],b[0][1]),t.point(b[1][0],b[1][1]),t.lineEnd()):(t.point(b[1][0],b[1][1]),t.lineEnd(),t.lineStart(),t.point(b[0][0],b[0][1],3)))}!p||e&&Jd(e,U)||t.point(U[0],U[1]),e=U,o=p,n=F},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return d|(c&&o)<<1}}}),(function(e,l,i,a){gd(a,t,n,i,e,l)}),l?[0,-t]:[-Eo,t-Eo])}var vd=1e9,Od=-vd;function _d(t,e,n,l){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=l}function a(i,a,r,c){var d=0,u=0;if(null==i||(d=s(i,r))!==(u=s(a,r))||o(i,a)<0^r>0)do{c.point(0===d||3===d?t:n,d>1?l:e)}while((d=(d+r+4)%4)!==u);else c.point(a[0],a[1])}function s(l,i){return Co(l[0]-t)0?0:3:Co(l[0]-n)0?2:1:Co(l[1]-e)0?1:0:i>0?3:2}function r(t,e){return o(t.x,e.x)}function o(t,e){var n=s(t,1),l=s(e,1);return n!==l?n-l:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){var o,c,d,u,h,m,U,p,F,b,Z,N=s,R=Bd(),S={point:W,lineStart:function(){S.point=V,c&&c.push(d=[]),b=!0,F=!1,U=p=NaN},lineEnd:function(){o&&(V(u,h),m&&F&&R.rejoin(),o.push(R.result())),S.point=W,F&&N.lineEnd()},polygonStart:function(){N=R,o=[],c=[],Z=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;nl&&(h-a)*(l-s)>(m-s)*(t-a)&&++e:m<=l&&(h-a)*(l-s)<(m-s)*(t-a)&&--e;return e}(),n=Z&&e,i=(o=D(o)).length;(n||i)&&(s.polygonStart(),n&&(s.lineStart(),a(null,null,1,s),s.lineEnd()),i&&Yd(o,r,e,a,s),s.polygonEnd()),N=s,o=c=d=null}};function W(t,e){i(t,e)&&N.point(t,e)}function V(a,s){var r=i(a,s);if(c&&d.push([a,s]),b)u=a,h=s,m=r,b=!1,r&&(N.lineStart(),N.point(a,s));else if(r&&F)N.point(a,s);else{var o=[U=Math.max(Od,Math.min(vd,U)),p=Math.max(Od,Math.min(vd,p))],R=[a=Math.max(Od,Math.min(vd,a)),s=Math.max(Od,Math.min(vd,s))];!function(t,e,n,l,i,a){var s,r=t[0],o=t[1],c=0,d=1,u=e[0]-r,h=e[1]-o;if(s=n-r,u||!(s>0)){if(s/=u,u<0){if(s0){if(s>d)return;s>c&&(c=s)}if(s=i-r,u||!(s<0)){if(s/=u,u<0){if(s>d)return;s>c&&(c=s)}else if(u>0){if(s0)){if(s/=h,h<0){if(s0){if(s>d)return;s>c&&(c=s)}if(s=a-o,h||!(s<0)){if(s/=h,h<0){if(s>d)return;s>c&&(c=s)}else if(h>0){if(s0&&(t[0]=r+c*u,t[1]=o+c*h),d<1&&(e[0]=r+d*u,e[1]=o+d*h),!0}}}}}(o,R,t,e,n,l)?r&&(N.lineStart(),N.point(a,s),Z=!1):(F||(N.lineStart(),N.point(o[0],o[1])),N.point(R[0],R[1]),r||N.lineEnd(),Z=!1)}U=a,p=s,F=r}return S}}function jd(){var t,e,n,l=0,i=0,a=960,s=500;return n={stream:function(n){return t&&e===n?t:t=_d(l,i,a,s)(e=n)},extent:function(r){return arguments.length?(l=+r[0][0],i=+r[0][1],a=+r[1][0],s=+r[1][1],t=e=null,n):[[l,i],[a,s]]}}}var Kd,Pd,Ad,Hd=Vo(),qd={sphere:Ao,point:Ao,lineStart:function(){qd.point=tu,qd.lineEnd=$d},lineEnd:Ao,polygonStart:Ao,polygonEnd:Ao};function $d(){qd.point=qd.lineEnd=Ao}function tu(t,e){Kd=t*=Yo,Pd=zo(e*=Yo),Ad=Do(e),qd.point=eu}function eu(t,e){t*=Yo;var n=zo(e*=Yo),l=Do(e),i=Co(t-Kd),a=Do(i),s=l*zo(i),r=Ad*n-Pd*l*a,o=Pd*n+Ad*l*a;Hd.add(Io(Oo(s*s+r*r),o)),Kd=t,Pd=n,Ad=l}function nu(t){return Hd.reset(),nc(t,qd),+Hd}var lu=[null,null],iu={type:"LineString",coordinates:lu};function au(t,e){return lu[0]=t,lu[1]=e,nu(iu)}var su={Feature:function(t,e){return ou(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,l=-1,i=n.length;++l0&&(i=au(t[a],t[a-1]))>0&&n<=i&&l<=i&&(n+l-i)*(1-Math.pow((n-l)/i,2))Mo})).map(o)).concat(V(fo(a/m)*m,i,m).filter((function(t){return Co(t%p)>Mo})).map(c))}return b.lines=function(){return Z().map((function(t){return{type:"LineString",coordinates:t}}))},b.outline=function(){return{type:"Polygon",coordinates:[d(l).concat(u(s).slice(1),d(n).reverse().slice(1),u(r).reverse().slice(1))]}},b.extent=function(t){return arguments.length?b.extentMajor(t).extentMinor(t):b.extentMinor()},b.extentMajor=function(t){return arguments.length?(l=+t[0][0],n=+t[1][0],r=+t[0][1],s=+t[1][1],l>n&&(t=l,l=n,n=t),r>s&&(t=r,r=s,s=t),b.precision(F)):[[l,r],[n,s]]},b.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),b.precision(F)):[[e,a],[t,i]]},b.step=function(t){return arguments.length?b.stepMajor(t).stepMinor(t):b.stepMinor()},b.stepMajor=function(t){return arguments.length?(U=+t[0],p=+t[1],b):[U,p]},b.stepMinor=function(t){return arguments.length?(h=+t[0],m=+t[1],b):[h,m]},b.precision=function(h){return arguments.length?(F=+h,o=pu(a,i,90),c=Fu(e,t,F),d=pu(r,s,90),u=Fu(l,n,F),b):F},b.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function Zu(){return bu()()}function Nu(t,e){var n=t[0]*Yo,l=t[1]*Yo,i=e[0]*Yo,a=e[1]*Yo,s=Do(l),r=zo(l),o=Do(a),c=zo(a),d=s*Do(n),u=s*zo(n),h=o*Do(i),m=o*zo(i),U=2*Ko(Oo(Po(a-l)+s*o*Po(i-n))),p=zo(U),F=U?function(t){var e=zo(t*=U)/p,n=zo(U-t)/p,l=n*d+e*h,i=n*u+e*m,a=n*r+e*c;return[Io(i,l)*ko,Io(a,Oo(l*l+i*i))*ko]}:function(){return[n*ko,l*ko]};return F.distance=U,F}function Ru(t){return t}var Su,Wu,Vu,Qu,yu=Vo(),Tu=Vo(),Mu={point:Ao,lineStart:Ao,lineEnd:Ao,polygonStart:function(){Mu.lineStart=gu,Mu.lineEnd=Bu},polygonEnd:function(){Mu.lineStart=Mu.lineEnd=Mu.point=Ao,yu.add(Co(Tu)),Tu.reset()},result:function(){var t=yu/2;return yu.reset(),t}};function gu(){Mu.point=Eu}function Eu(t,e){Mu.point=Gu,Su=Vu=t,Wu=Qu=e}function Gu(t,e){Tu.add(Qu*t-Vu*e),Vu=t,Qu=e}function Bu(){Gu(Su,Wu)}const Ju=Mu;var ku=1/0,Yu=ku,Cu=-ku,Xu=Cu,Iu={point:function(t,e){tCu&&(Cu=t),eXu&&(Xu=e)},lineStart:Ao,lineEnd:Ao,polygonStart:Ao,polygonEnd:Ao,result:function(){var t=[[ku,Yu],[Cu,Xu]];return Cu=Xu=-(Yu=ku=1/0),t}};const Du=Iu;var fu,Lu,wu,xu,zu=0,vu=0,Ou=0,_u=0,ju=0,Ku=0,Pu=0,Au=0,Hu=0,qu={point:$u,lineStart:th,lineEnd:lh,polygonStart:function(){qu.lineStart=ih,qu.lineEnd=ah},polygonEnd:function(){qu.point=$u,qu.lineStart=th,qu.lineEnd=lh},result:function(){var t=Hu?[Pu/Hu,Au/Hu]:Ku?[_u/Ku,ju/Ku]:Ou?[zu/Ou,vu/Ou]:[NaN,NaN];return zu=vu=Ou=_u=ju=Ku=Pu=Au=Hu=0,t}};function $u(t,e){zu+=t,vu+=e,++Ou}function th(){qu.point=eh}function eh(t,e){qu.point=nh,$u(wu=t,xu=e)}function nh(t,e){var n=t-wu,l=e-xu,i=Oo(n*n+l*l);_u+=i*(wu+t)/2,ju+=i*(xu+e)/2,Ku+=i,$u(wu=t,xu=e)}function lh(){qu.point=$u}function ih(){qu.point=sh}function ah(){rh(fu,Lu)}function sh(t,e){qu.point=rh,$u(fu=wu=t,Lu=xu=e)}function rh(t,e){var n=t-wu,l=e-xu,i=Oo(n*n+l*l);_u+=i*(wu+t)/2,ju+=i*(xu+e)/2,Ku+=i,Pu+=(i=xu*t-wu*e)*(wu+t),Au+=i*(xu+e),Hu+=3*i,$u(wu=t,xu=e)}const oh=qu;function ch(t){this._context=t}ch.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,Jo)}},result:Ao};var dh,uh,hh,mh,Uh,ph=Vo(),Fh={point:Ao,lineStart:function(){Fh.point=bh},lineEnd:function(){dh&&Zh(uh,hh),Fh.point=Ao},polygonStart:function(){dh=!0},polygonEnd:function(){dh=null},result:function(){var t=+ph;return ph.reset(),t}};function bh(t,e){Fh.point=Zh,uh=mh=t,hh=Uh=e}function Zh(t,e){mh-=t,Uh-=e,ph.add(Oo(mh*mh+Uh*Uh)),mh=t,Uh=e}const Nh=Fh;function Rh(){this._string=[]}function Sh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Wh(t,e){var n,l,i=4.5;function a(t){return t&&("function"==typeof i&&l.pointRadius(+i.apply(this,arguments)),nc(t,n(l))),l.result()}return a.area=function(t){return nc(t,n(Ju)),Ju.result()},a.measure=function(t){return nc(t,n(Nh)),Nh.result()},a.bounds=function(t){return nc(t,n(Du)),Du.result()},a.centroid=function(t){return nc(t,n(oh)),oh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,Ru):(t=e).stream,a):t},a.context=function(t){return arguments.length?(l=null==t?(e=null,new Rh):new ch(e=t),"function"!=typeof i&&l.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(l.pointRadius(+t),+t),a):i},a.projection(t).context(e)}function Vh(t){return{stream:Qh(t)}}function Qh(t){return function(e){var n=new yh;for(var l in t)n[l]=t[l];return n.stream=e,n}}function yh(){}function Th(t,e,n){var l=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=l&&t.clipExtent(null),nc(n,t.stream(Du)),e(Du.result()),null!=l&&t.clipExtent(l),t}function Mh(t,e,n){return Th(t,(function(n){var l=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(l/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+e[0][0]+(l-a*(n[1][0]+n[0][0]))/2,r=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([s,r])}),n)}function gh(t,e,n){return Mh(t,[[0,0],e],n)}function Eh(t,e,n){return Th(t,(function(n){var l=+e,i=l/(n[1][0]-n[0][0]),a=(l-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];t.scale(150*i).translate([a,s])}),n)}function Gh(t,e,n){return Th(t,(function(n){var l=+e,i=l/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(l-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,s])}),n)}Rh.prototype={_radius:4.5,_circle:Sh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=Sh(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},yh.prototype={constructor:yh,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Bh=Do(30*Yo);function Jh(t,e){return+e?function(t,e){function n(l,i,a,s,r,o,c,d,u,h,m,U,p,F){var b=c-l,Z=d-i,N=b*b+Z*Z;if(N>4*e&&p--){var R=s+h,S=r+m,W=o+U,V=Oo(R*R+S*S+W*W),Q=Ko(W/=V),y=Co(Co(W)-1)e||Co((b*E+Z*G)/N-.5)>.3||s*h+r*m+o*U2?t[2]%360*Yo:0,E()):[F*ko,b*ko,Z*ko]},M.angle=function(t){return arguments.length?(N=t%360*Yo,E()):N*ko},M.reflectX=function(t){return arguments.length?(R=t?-1:1,E()):R<0},M.reflectY=function(t){return arguments.length?(S=t?-1:1,E()):S<0},M.precision=function(t){return arguments.length?(s=Jh(r,T=t*t),G()):Oo(T)},M.fitExtent=function(t,e){return Mh(M,t,e)},M.fitSize=function(t,e){return gh(M,t,e)},M.fitWidth=function(t,e){return Eh(M,t,e)},M.fitHeight=function(t,e){return Gh(M,t,e)},function(){return e=t.apply(this,arguments),M.invert=e.invert&&g,E()}}function Dh(t){var e=0,n=Eo/3,l=Ih(t),i=l(e,n);return i.parallels=function(t){return arguments.length?l(e=t[0]*Yo,n=t[1]*Yo):[e*ko,n*ko]},i}function fh(t,e){var n=zo(t),l=(n+zo(e))/2;if(Co(l)=.12&&i<.234&&l>=-.425&&l<-.214?r:i>=.166&&i<.234&&l>=-.214&&l<-.115?o:s).invert(t)},d.stream=function(n){return t&&e===n?t:(l=[s.stream(e=n),r.stream(n),o.stream(n)],i=l.length,t={point:function(t,e){for(var n=-1;++n0?e<-Go+Mo&&(e=-Go+Mo):e>Go-Mo&&(e=Go-Mo);var n=i/xo(qh(e),l);return[n*zo(l*t),i-n*Do(l*t)]}return a.invert=function(t,e){var n=i-e,a=vo(l)*Oo(t*t+n*n),s=Io(t,Co(n))*vo(n);return n*l<0&&(s-=Eo*vo(t)*vo(n)),[s/l,2*Xo(xo(i/a,1/l))-Go]},a}function tm(){return Dh($h).scale(109.5).parallels([30,30])}function em(t,e){return[t,e]}function nm(){return Xh(em).scale(152.63)}function lm(t,e){var n=Do(t),l=t===e?zo(t):(n-Do(e))/(e-t),i=n/l+t;if(Co(l)2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}function Vm(t,e){return t.parent===e.parent?1:2}function Qm(t,e){return t+e.x}function ym(t,e){return Math.max(t,e.y)}function Tm(){var t=Vm,e=1,n=1,l=!1;function i(i){var a,s=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(Qm,0)/t.length}(n),e.y=function(t){return 1+t.reduce(ym,0)}(n)):(e.x=a?s+=t(e,a):0,e.y=0,a=e)}));var r=function(t){for(var e;e=t.children;)t=e[0];return t}(i),o=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=r.x-t(r,o)/2,d=o.x+t(o,r)/2;return i.eachAfter(l?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(d-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(l=!1,e=+t[0],n=+t[1],i):l?null:[e,n]},i.nodeSize=function(t){return arguments.length?(l=!0,e=+t[0],n=+t[1],i):l?[e,n]:null},i}function Mm(t){var e=0,n=t.children,l=n&&n.length;if(l)for(;--l>=0;)e+=n[l].value;else e=1;t.value=e}function gm(t,e){var n,l,i,a,s,r=new Jm(t),o=+t.value&&(r.value=t.value),c=[r];for(null==e&&(e=Em);n=c.pop();)if(o&&(n.value=+n.data.value),(i=e(n.data))&&(s=i.length))for(n.children=new Array(s),a=s-1;a>=0;--a)c.push(l=n.children[a]=new Jm(i[a])),l.parent=n,l.depth=n.depth+1;return r.eachBefore(Bm)}function Em(t){return t.children}function Gm(t){t.data=t.data.data}function Bm(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Jm(t){this.data=t,this.depth=this.height=0,this.parent=null}dm.invert=function(t,e){for(var n,l=e,i=l*l,a=i*i*i,s=0;s<12&&(a=(i=(l-=n=(l*(am+sm*i+a*(rm+om*i))-e)/(am+3*sm*i+a*(7*rm+9*om*i)))*l)*i*i,!(Co(n)Mo&&--i>0);return[t/(.8707+(a=l*l)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),l]},bm.invert=vh(Ko),Nm.invert=vh((function(t){return 2*Xo(t)})),Sm.invert=function(t,e){return[-e,2*Xo(Lo(t))-Go]},Jm.prototype=gm.prototype={constructor:Jm,count:function(){return this.eachAfter(Mm)},each:function(t){var e,n,l,i,a=this,s=[a];do{for(e=s.reverse(),s=[];a=e.pop();)if(t(a),n=a.children)for(l=0,i=n.length;l=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,l=e.children,i=l&&l.length;--i>=0;)n+=l[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),l=e.ancestors(),i=null;for(t=n.pop(),e=l.pop();t===e;)i=t,t=n.pop(),e=l.pop();return i}(e,t),l=[e];e!==n;)e=e.parent,l.push(e);for(var i=l.length;t!==n;)l.splice(i,0,t),t=t.parent;return l},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return gm(this).eachBefore(Gm)}};var km=Array.prototype.slice;function Ym(t){for(var e,n,l=0,i=(t=function(t){for(var e,n,l=t.length;l;)n=Math.random()*l--|0,e=t[l],t[l]=t[n],t[n]=e;return t}(km.call(t))).length,a=[];l0&&n*n>l*l+i*i}function Dm(t,e){for(var n=0;n(s*=s)?(l=(c+s-i)/(2*c),a=Math.sqrt(Math.max(0,s/c-l*l)),n.x=t.x-l*r-a*o,n.y=t.y-l*o+a*r):(l=(c+i-s)/(2*c),a=Math.sqrt(Math.max(0,i/c-l*l)),n.x=e.x+l*r-a*o,n.y=e.y+l*o+a*r)):(n.x=e.x+n.r,n.y=e.y)}function zm(t,e){var n=t.r+e.r-1e-6,l=e.x-t.x,i=e.y-t.y;return n>0&&n*n>l*l+i*i}function vm(t){var e=t._,n=t.next._,l=e.r+n.r,i=(e.x*n.r+n.x*e.r)/l,a=(e.y*n.r+n.y*e.r)/l;return i*i+a*a}function Om(t){this._=t,this.next=null,this.previous=null}function _m(t){if(!(i=t.length))return 0;var e,n,l,i,a,s,r,o,c,d,u;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;xm(n,e,l=t[2]),e=new Om(e),n=new Om(n),l=new Om(l),e.next=l.previous=n,n.next=e.previous=l,l.next=n.previous=e;t:for(r=3;r0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Pm(e),n):t},n.parentId=function(t){return arguments.length?(e=Pm(t),n):e},n}function uU(t,e){return t.parent===e.parent?1:2}function hU(t){var e=t.children;return e?e[0]:t.t}function mU(t){var e=t.children;return e?e[e.length-1]:t.t}function UU(t,e,n){var l=n/(e.i-t.i);e.c-=l,e.s+=n,t.c+=l,e.z+=n,e.m+=n}function pU(t,e,n){return t.a.parent===e.parent?t.a:n}function FU(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function bU(){var t=uU,e=1,n=1,l=null;function i(i){var o=function(t){for(var e,n,l,i,a,s=new FU(t,0),r=[s];e=r.pop();)if(l=e._.children)for(e.children=new Array(a=l.length),i=a-1;i>=0;--i)r.push(n=e.children[i]=new FU(l[i],i)),n.parent=e;return(s.parent=new FU(null,0)).children=[s],s}(i);if(o.eachAfter(a),o.parent.m=-o.z,o.eachBefore(s),l)i.eachBefore(r);else{var c=i,d=i,u=i;i.eachBefore((function(t){t.xd.x&&(d=t),t.depth>u.depth&&(u=t)}));var h=c===d?1:t(c,d)/2,m=h-c.x,U=e/(d.x+h+m),p=n/(u.depth||1);i.eachBefore((function(t){t.x=(t.x+m)*U,t.y=t.depth*p}))}return i}function a(e){var n=e.children,l=e.parent.children,i=e.i?l[e.i-1]:null;if(n){!function(t){for(var e,n=0,l=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(l+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,l){if(n){for(var i,a=e,s=e,r=n,o=a.parent.children[0],c=a.m,d=s.m,u=r.m,h=o.m;r=mU(r),a=hU(a),r&&a;)o=hU(o),(s=mU(s)).a=e,(i=r.z+u-a.z-c+t(r._,a._))>0&&(UU(pU(r,e,l),e,i),c+=i,d+=i),u+=r.m,c+=a.m,h+=o.m,d+=s.m;r&&!mU(s)&&(s.t=r,s.m+=u-d),a&&!hU(o)&&(o.t=a,o.m+=c-h,l=e)}return l}(e,i,e.parent.A||l[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(l=!1,e=+t[0],n=+t[1],i):l?null:[e,n]},i.nodeSize=function(t){return arguments.length?(l=!0,e=+t[0],n=+t[1],i):l?[e,n]:null},i}function ZU(t,e,n,l,i){for(var a,s=t.children,r=-1,o=s.length,c=t.value&&(i-n)/t.value;++rh&&(h=r),F=d*d*p,(m=Math.max(h/F,F/u))>U){d-=r;break}U=m}b.push(s={value:d,dice:o1?e:1)},n}(NU);function WU(){var t=SU,e=!1,n=1,l=1,i=[0],a=Am,s=Am,r=Am,o=Am,c=Am;function d(t){return t.x0=t.y0=0,t.x1=n,t.y1=l,t.eachBefore(u),i=[0],e&&t.eachBefore(lU),t}function u(e){var n=i[e.depth],l=e.x0+n,d=e.y0+n,u=e.x1-n,h=e.y1-n;u=n-1){var d=r[e];return d.x0=i,d.y0=a,d.x1=s,void(d.y1=o)}for(var u=c[e],h=l/2+u,m=e+1,U=n-1;m>>1;c[p]o-a){var Z=(i*b+s*F)/l;t(e,m,F,i,a,Z,o),t(m,n,b,Z,a,s,o)}else{var N=(a*b+o*F)/l;t(e,m,F,i,a,s,N),t(m,n,b,i,N,s,o)}}(0,o,t.value,e,n,l,i)}function QU(t,e,n,l,i){(1&t.depth?ZU:iU)(t,e,n,l,i)}const yU=function t(e){function n(t,n,l,i,a){if((s=t._squarify)&&s.ratio===e)for(var s,r,o,c,d,u=-1,h=s.length,m=t.value;++u1?e:1)},n}(NU);function TU(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function MU(t,e){var n=mn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}}function gU(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var EU=Math.SQRT2;function GU(t){return((t=Math.exp(t))+1/t)/2}function BU(t,e){var n,l,i=t[0],a=t[1],s=t[2],r=e[0],o=e[1],c=e[2],d=r-i,u=o-a,h=d*d+u*u;if(h<1e-12)l=Math.log(c/s)/EU,n=function(t){return[i+t*d,a+t*u,s*Math.exp(EU*t*l)]};else{var m=Math.sqrt(h),U=(c*c-s*s+4*h)/(2*s*2*m),p=(c*c-s*s-4*h)/(2*c*2*m),F=Math.log(Math.sqrt(U*U+1)-U),b=Math.log(Math.sqrt(p*p+1)-p);l=(b-F)/EU,n=function(t){var e,n=t*l,r=GU(F),o=s/(2*m)*(r*(e=EU*n+F,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(F));return[i+o*d,a+o*u,s*r/GU(EU*n+F)]}}return n.duration=1e3*l,n}function JU(t){return function(e,n){var l=t((e=an(e)).h,(n=an(n)).h),i=Un(e.s,n.s),a=Un(e.l,n.l),s=Un(e.opacity,n.opacity);return function(t){return e.h=l(t),e.s=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const kU=JU(mn);var YU=JU(Un);function CU(t,e){var n=Un((t=Qa(t)).l,(e=Qa(e)).l),l=Un(t.a,e.a),i=Un(t.b,e.b),a=Un(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=l(e),t.b=i(e),t.opacity=a(e),t+""}}function XU(t){return function(e,n){var l=t((e=Ja(e)).h,(n=Ja(n)).h),i=Un(e.c,n.c),a=Un(e.l,n.l),s=Un(e.opacity,n.opacity);return function(t){return e.h=l(t),e.c=i(t),e.l=a(t),e.opacity=s(t),e+""}}}const IU=XU(mn);var DU=XU(Un);function fU(t){return function e(n){function l(e,l){var i=t((e=va(e)).h,(l=va(l)).h),a=Un(e.s,l.s),s=Un(e.l,l.l),r=Un(e.opacity,l.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=s(Math.pow(t,n)),e.opacity=r(t),e+""}}return n=+n,l.gamma=e,l}(1)}const LU=fU(mn);var wU=fU(Un);function xU(t,e){for(var n=0,l=e.length-1,i=e[0],a=new Array(l<0?0:l);n1&&_U(t[n[l-2]],t[n[l-1]],t[i])<=0;)--l;n[l++]=i}return n.slice(0,l)}function PU(t){if((n=t.length)<3)return null;var e,n,l=new Array(n),i=new Array(n);for(e=0;e=0;--e)c.push(t[l[a[e]][2]]);for(e=+r;er!=c>r&&s<(o-n)*(r-l)/(c-l)+n&&(d=!d),o=n,c=l;return d}function HU(t){for(var e,n,l=-1,i=t.length,a=t[i-1],s=a[0],r=a[1],o=0;++l1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(qU),ep=function t(e){function n(){var t=tp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(qU),np=function t(e){function n(t){return function(){for(var n=0,l=0;ll&&(e=n,n=l,l=e),function(t){return Math.max(n,Math.min(l,t))}}function Rp(t,e,n){var l=t[0],i=t[1],a=e[0],s=e[1];return i2?Sp:Rp,i=a=null,u}function u(e){return isNaN(e=+e)?n:(i||(i=l(s.map(t),r,o)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=l(r,s.map(t),Qn)))(n)))},u.domain=function(t){return arguments.length?(s=op.call(t,pp),c===bp||(c=Np(s)),d()):s.slice()},u.range=function(t){return arguments.length?(r=cp.call(t),d()):r.slice()},u.rangeRound=function(t){return r=cp.call(t),o=gU,d()},u.clamp=function(t){return arguments.length?(c=t?Np(s):bp,u):c!==bp},u.interpolate=function(t){return arguments.length?(o=t,d()):o},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,l){return t=n,e=l,d()}}function Qp(t,e){return Vp()(t,e)}function yp(t,e,n,l){var i,a=E(t,e,n);switch((l=ro(null==l?",f":l)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=l.precision||isNaN(i=So(a,s))||(l.precision=i),po(l,s);case"":case"e":case"g":case"p":case"r":null!=l.precision||isNaN(i=Wo(a,Math.max(Math.abs(t),Math.abs(e))))||(l.precision=i-("e"===l.type));break;case"f":case"%":null!=l.precision||isNaN(i=Ro(a))||(l.precision=i-2*("%"===l.type))}return Uo(l)}function Tp(t){var e=t.domain;return t.ticks=function(t){var n=e();return M(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var l=e();return yp(l[0],l[l.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var l,i=e(),a=0,s=i.length-1,r=i[a],o=i[s];return o0?l=g(r=Math.floor(r/l)*l,o=Math.ceil(o/l)*l,n):l<0&&(l=g(r=Math.ceil(r*l)/l,o=Math.floor(o*l)/l,n)),l>0?(i[a]=Math.floor(r/l)*l,i[s]=Math.ceil(o/l)*l,e(i)):l<0&&(i[a]=Math.ceil(r*l)/l,i[s]=Math.floor(o*l)/l,e(i)),t},t}function Mp(){var t=Qp(bp,bp);return t.copy=function(){return Wp(t,Mp())},ap.apply(t,arguments),Tp(t)}function gp(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=op.call(e,pp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return gp(t).unknown(e)},t=arguments.length?op.call(t,pp):[0,1],Tp(n)}function Ep(t,e){var n,l=0,i=(t=t.slice()).length-1,a=t[l],s=t[i];return s0){for(;ho)break;p.push(u)}}else for(;h=1;--d)if(!((u=c*d)o)break;p.push(u)}}else p=M(h,m,Math.min(m-h,U)).map(n);return l?p.reverse():p},l.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Uo(i)),t===1/0)return i;null==t&&(t=10);var s=Math.max(1,a*t/l.ticks().length);return function(t){var l=t/n(Math.round(e(t)));return l*a0?l[i-1]:e[0],i=l?[i[l-1],n]:[i[s-1],i[s]]},s.unknown=function(e){return arguments.length?(t=e,s):s},s.thresholds=function(){return i.slice()},s.copy=function(){return Pp().domain([e,n]).range(a).unknown(t)},ap.apply(Tp(s),arguments)}function Ap(){var t,e=[.5],n=[0,1],l=1;function i(i){return i<=i?n[c(e,i,0,l)]:t}return i.domain=function(t){return arguments.length?(e=cp.call(t),l=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=cp.call(t),l=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var l=n.indexOf(t);return[e[l-1],e[l]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Ap().domain(e).range(n).unknown(t)},ap.apply(i,arguments)}var Hp=new Date,qp=new Date;function $p(t,e,n,l){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return r;do{r.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,l){if(t>=t)if(l<0)for(;++l<=0;)for(;e(t,-1),!n(t););else for(;--l>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,l){return Hp.setTime(+e),qp.setTime(+l),t(Hp),t(qp),Math.floor(n(Hp,qp))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(l?function(e){return l(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var tF=$p((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));tF.every=function(t){return isFinite(t=Math.floor(t))&&t>0?$p((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const eF=tF;var nF=tF.range,lF=$p((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}));const iF=lF;var aF=lF.range,sF=1e3,rF=6e4,oF=36e5,cF=864e5,dF=6048e5;function uF(t){return $p((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rF)/dF}))}var hF=uF(0),mF=uF(1),UF=uF(2),pF=uF(3),FF=uF(4),bF=uF(5),ZF=uF(6),NF=hF.range,RF=mF.range,SF=UF.range,WF=pF.range,VF=FF.range,QF=bF.range,yF=ZF.range,TF=$p((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rF)/cF}),(function(t){return t.getDate()-1}));const MF=TF;var gF=TF.range,EF=$p((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sF-t.getMinutes()*rF)}),(function(t,e){t.setTime(+t+e*oF)}),(function(t,e){return(e-t)/oF}),(function(t){return t.getHours()}));const GF=EF;var BF=EF.range,JF=$p((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sF)}),(function(t,e){t.setTime(+t+e*rF)}),(function(t,e){return(e-t)/rF}),(function(t){return t.getMinutes()}));const kF=JF;var YF=JF.range,CF=$p((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*sF)}),(function(t,e){return(e-t)/sF}),(function(t){return t.getUTCSeconds()}));const XF=CF;var IF=CF.range,DF=$p((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));DF.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?$p((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):DF:null};const fF=DF;var LF=DF.range;function wF(t){return $p((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/dF}))}var xF=wF(0),zF=wF(1),vF=wF(2),OF=wF(3),_F=wF(4),jF=wF(5),KF=wF(6),PF=xF.range,AF=zF.range,HF=vF.range,qF=OF.range,$F=_F.range,tb=jF.range,eb=KF.range,nb=$p((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/cF}),(function(t){return t.getUTCDate()-1}));const lb=nb;var ib=nb.range,ab=$p((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));ab.every=function(t){return isFinite(t=Math.floor(t))&&t>0?$p((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const sb=ab;var rb=ab.range;function ob(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function cb(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function db(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function ub(t){var e=t.dateTime,n=t.date,l=t.time,i=t.periods,a=t.days,s=t.shortDays,r=t.months,o=t.shortMonths,c=Vb(i),d=Qb(i),u=Vb(a),h=Qb(a),m=Vb(s),U=Qb(s),p=Vb(r),F=Qb(r),b=Vb(o),Z=Qb(o),N={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return o[t.getMonth()]},B:function(t){return r[t.getMonth()]},c:null,d:Ob,e:Ob,f:Ab,g:rZ,G:cZ,H:_b,I:jb,j:Kb,L:Pb,m:Hb,M:qb,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:JZ,s:kZ,S:$b,u:tZ,U:eZ,V:lZ,w:iZ,W:aZ,x:null,X:null,y:sZ,Y:oZ,Z:dZ,"%":BZ},R={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return o[t.getUTCMonth()]},B:function(t){return r[t.getUTCMonth()]},c:null,d:uZ,e:uZ,f:FZ,g:MZ,G:EZ,H:hZ,I:mZ,j:UZ,L:pZ,m:bZ,M:ZZ,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:JZ,s:kZ,S:NZ,u:RZ,U:SZ,V:VZ,w:QZ,W:yZ,x:null,X:null,y:TZ,Y:gZ,Z:GZ,"%":BZ},S={a:function(t,e,n){var l=m.exec(e.slice(n));return l?(t.w=U[l[0].toLowerCase()],n+l[0].length):-1},A:function(t,e,n){var l=u.exec(e.slice(n));return l?(t.w=h[l[0].toLowerCase()],n+l[0].length):-1},b:function(t,e,n){var l=b.exec(e.slice(n));return l?(t.m=Z[l[0].toLowerCase()],n+l[0].length):-1},B:function(t,e,n){var l=p.exec(e.slice(n));return l?(t.m=F[l[0].toLowerCase()],n+l[0].length):-1},c:function(t,n,l){return Q(t,e,n,l)},d:Cb,e:Cb,f:wb,g:Bb,G:Gb,H:Ib,I:Ib,j:Xb,L:Lb,m:Yb,M:Db,p:function(t,e,n){var l=c.exec(e.slice(n));return l?(t.p=d[l[0].toLowerCase()],n+l[0].length):-1},q:kb,Q:zb,s:vb,S:fb,u:Tb,U:Mb,V:gb,w:yb,W:Eb,x:function(t,e,l){return Q(t,n,e,l)},X:function(t,e,n){return Q(t,l,e,n)},y:Bb,Y:Gb,Z:Jb,"%":xb};function W(t,e){return function(n){var l,i,a,s=[],r=-1,o=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++r53)return null;"w"in a||(a.w=1),"Z"in a?(i=(l=cb(db(a.y,0,1))).getUTCDay(),l=i>4||0===i?zF.ceil(l):zF(l),l=lb.offset(l,7*(a.V-1)),a.y=l.getUTCFullYear(),a.m=l.getUTCMonth(),a.d=l.getUTCDate()+(a.w+6)%7):(i=(l=ob(db(a.y,0,1))).getDay(),l=i>4||0===i?mF.ceil(l):mF(l),l=MF.offset(l,7*(a.V-1)),a.y=l.getFullYear(),a.m=l.getMonth(),a.d=l.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?cb(db(a.y,0,1)).getUTCDay():ob(db(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,cb(a)):ob(a)}}function Q(t,e,n,l){for(var i,a,s=0,r=e.length,o=n.length;s=o)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=S[i in bb?e.charAt(s++):i])||(l=a(t,n,l))<0)return-1}else if(i!=n.charCodeAt(l++))return-1}return l}return N.x=W(n,N),N.X=W(l,N),N.c=W(e,N),R.x=W(n,R),R.X=W(l,R),R.c=W(e,R),{format:function(t){var e=W(t+="",N);return e.toString=function(){return t},e},parse:function(t){var e=V(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=W(t+="",R);return e.toString=function(){return t},e},utcParse:function(t){var e=V(t+="",!0);return e.toString=function(){return t},e}}}var hb,mb,Ub,pb,Fb,bb={"-":"",_:" ",0:"0"},Zb=/^\s*\d+/,Nb=/^%/,Rb=/[\\^$*+?|[\]().{}]/g;function Sb(t,e,n){var l=t<0?"-":"",i=(l?-t:t)+"",a=i.length;return l+(a68?1900:2e3),n+l[0].length):-1}function Jb(t,e,n){var l=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return l?(t.Z=l[1]?0:-(l[2]+(l[3]||"00")),n+l[0].length):-1}function kb(t,e,n){var l=Zb.exec(e.slice(n,n+1));return l?(t.q=3*l[0]-3,n+l[0].length):-1}function Yb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.m=l[0]-1,n+l[0].length):-1}function Cb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.d=+l[0],n+l[0].length):-1}function Xb(t,e,n){var l=Zb.exec(e.slice(n,n+3));return l?(t.m=0,t.d=+l[0],n+l[0].length):-1}function Ib(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.H=+l[0],n+l[0].length):-1}function Db(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.M=+l[0],n+l[0].length):-1}function fb(t,e,n){var l=Zb.exec(e.slice(n,n+2));return l?(t.S=+l[0],n+l[0].length):-1}function Lb(t,e,n){var l=Zb.exec(e.slice(n,n+3));return l?(t.L=+l[0],n+l[0].length):-1}function wb(t,e,n){var l=Zb.exec(e.slice(n,n+6));return l?(t.L=Math.floor(l[0]/1e3),n+l[0].length):-1}function xb(t,e,n){var l=Nb.exec(e.slice(n,n+1));return l?n+l[0].length:-1}function zb(t,e,n){var l=Zb.exec(e.slice(n));return l?(t.Q=+l[0],n+l[0].length):-1}function vb(t,e,n){var l=Zb.exec(e.slice(n));return l?(t.s=+l[0],n+l[0].length):-1}function Ob(t,e){return Sb(t.getDate(),e,2)}function _b(t,e){return Sb(t.getHours(),e,2)}function jb(t,e){return Sb(t.getHours()%12||12,e,2)}function Kb(t,e){return Sb(1+MF.count(eF(t),t),e,3)}function Pb(t,e){return Sb(t.getMilliseconds(),e,3)}function Ab(t,e){return Pb(t,e)+"000"}function Hb(t,e){return Sb(t.getMonth()+1,e,2)}function qb(t,e){return Sb(t.getMinutes(),e,2)}function $b(t,e){return Sb(t.getSeconds(),e,2)}function tZ(t){var e=t.getDay();return 0===e?7:e}function eZ(t,e){return Sb(hF.count(eF(t)-1,t),e,2)}function nZ(t){var e=t.getDay();return e>=4||0===e?FF(t):FF.ceil(t)}function lZ(t,e){return t=nZ(t),Sb(FF.count(eF(t),t)+(4===eF(t).getDay()),e,2)}function iZ(t){return t.getDay()}function aZ(t,e){return Sb(mF.count(eF(t)-1,t),e,2)}function sZ(t,e){return Sb(t.getFullYear()%100,e,2)}function rZ(t,e){return Sb((t=nZ(t)).getFullYear()%100,e,2)}function oZ(t,e){return Sb(t.getFullYear()%1e4,e,4)}function cZ(t,e){var n=t.getDay();return Sb((t=n>=4||0===n?FF(t):FF.ceil(t)).getFullYear()%1e4,e,4)}function dZ(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Sb(e/60|0,"0",2)+Sb(e%60,"0",2)}function uZ(t,e){return Sb(t.getUTCDate(),e,2)}function hZ(t,e){return Sb(t.getUTCHours(),e,2)}function mZ(t,e){return Sb(t.getUTCHours()%12||12,e,2)}function UZ(t,e){return Sb(1+lb.count(sb(t),t),e,3)}function pZ(t,e){return Sb(t.getUTCMilliseconds(),e,3)}function FZ(t,e){return pZ(t,e)+"000"}function bZ(t,e){return Sb(t.getUTCMonth()+1,e,2)}function ZZ(t,e){return Sb(t.getUTCMinutes(),e,2)}function NZ(t,e){return Sb(t.getUTCSeconds(),e,2)}function RZ(t){var e=t.getUTCDay();return 0===e?7:e}function SZ(t,e){return Sb(xF.count(sb(t)-1,t),e,2)}function WZ(t){var e=t.getUTCDay();return e>=4||0===e?_F(t):_F.ceil(t)}function VZ(t,e){return t=WZ(t),Sb(_F.count(sb(t),t)+(4===sb(t).getUTCDay()),e,2)}function QZ(t){return t.getUTCDay()}function yZ(t,e){return Sb(zF.count(sb(t)-1,t),e,2)}function TZ(t,e){return Sb(t.getUTCFullYear()%100,e,2)}function MZ(t,e){return Sb((t=WZ(t)).getUTCFullYear()%100,e,2)}function gZ(t,e){return Sb(t.getUTCFullYear()%1e4,e,4)}function EZ(t,e){var n=t.getUTCDay();return Sb((t=n>=4||0===n?_F(t):_F.ceil(t)).getUTCFullYear()%1e4,e,4)}function GZ(){return"+0000"}function BZ(){return"%"}function JZ(t){return+t}function kZ(t){return Math.floor(+t/1e3)}function YZ(t){return hb=ub(t),mb=hb.format,Ub=hb.parse,pb=hb.utcFormat,Fb=hb.utcParse,hb}YZ({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var CZ=31536e6;function XZ(t){return new Date(t)}function IZ(t){return t instanceof Date?+t:+new Date(+t)}function DZ(t,e,n,l,i,s,r,o,c){var d=Qp(bp,bp),u=d.invert,h=d.domain,m=c(".%L"),U=c(":%S"),p=c("%I:%M"),F=c("%I %p"),b=c("%a %d"),Z=c("%b %d"),N=c("%B"),R=c("%Y"),S=[[r,1,1e3],[r,5,5e3],[r,15,15e3],[r,30,3e4],[s,1,6e4],[s,5,3e5],[s,15,9e5],[s,30,18e5],[i,1,36e5],[i,3,108e5],[i,6,216e5],[i,12,432e5],[l,1,864e5],[l,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,CZ]];function W(a){return(r(a)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return TR.h=360*t-100,TR.s=1.5-1.5*e,TR.l=.8-.9*e,TR+""}var gR=He(),ER=Math.PI/3,GR=2*Math.PI/3;function BR(t){var e;return t=(.5-t)*Math.PI,gR.r=255*(e=Math.sin(t))*e,gR.g=255*(e=Math.sin(t+ER))*e,gR.b=255*(e=Math.sin(t+GR))*e,gR+""}function JR(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"}function kR(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}const YR=kR(dN("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var CR=kR(dN("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),XR=kR(dN("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),IR=kR(dN("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function DR(t){return Qe(ie(t).call(document.documentElement))}var fR=0;function LR(){return new wR}function wR(){this._="@"+(++fR).toString(36)}function xR(t){return"string"==typeof t?new Se([document.querySelectorAll(t)],[document.documentElement]):new Se([null==t?[]:t],Re)}function zR(t,e){null==e&&(e=Gn().touches);for(var n=0,l=e?e.length:0,i=new Array(l);n1?0:t<-1?$R:Math.acos(t)}function lS(t){return t>=1?tS:t<=-1?-tS:Math.asin(t)}function iS(t){return t.innerRadius}function aS(t){return t.outerRadius}function sS(t){return t.startAngle}function rS(t){return t.endAngle}function oS(t){return t&&t.padAngle}function cS(t,e,n,l,i,a,s,r){var o=n-t,c=l-e,d=s-i,u=r-a,h=u*o-d*c;if(!(h*hG*G+B*B&&(Q=T,y=M),{cx:Q,cy:y,x01:-d,y01:-u,x11:Q*(i/S-1),y11:y*(i/S-1)}}function uS(){var t=iS,e=aS,n=vR(0),l=null,i=sS,a=rS,s=oS,r=null;function o(){var o,c,d=+t.apply(this,arguments),u=+e.apply(this,arguments),h=i.apply(this,arguments)-tS,m=a.apply(this,arguments)-tS,U=OR(m-h),p=m>h;if(r||(r=o=_i()),uqR)if(U>eS-qR)r.moveTo(u*jR(h),u*AR(h)),r.arc(0,0,u,h,m,!p),d>qR&&(r.moveTo(d*jR(m),d*AR(m)),r.arc(0,0,d,m,h,p));else{var F,b,Z=h,N=m,R=h,S=m,W=U,V=U,Q=s.apply(this,arguments)/2,y=Q>qR&&(l?+l.apply(this,arguments):HR(d*d+u*u)),T=PR(OR(u-d)/2,+n.apply(this,arguments)),M=T,g=T;if(y>qR){var E=lS(y/d*AR(Q)),G=lS(y/u*AR(Q));(W-=2*E)>qR?(R+=E*=p?1:-1,S-=E):(W=0,R=S=(h+m)/2),(V-=2*G)>qR?(Z+=G*=p?1:-1,N-=G):(V=0,Z=N=(h+m)/2)}var B=u*jR(Z),J=u*AR(Z),k=d*jR(S),Y=d*AR(S);if(T>qR){var C,X=u*jR(N),I=u*AR(N),D=d*jR(R),f=d*AR(R);if(U<$R&&(C=cS(B,J,D,f,X,I,k,Y))){var L=B-C[0],w=J-C[1],x=X-C[0],z=I-C[1],v=1/AR(nS((L*x+w*z)/(HR(L*L+w*w)*HR(x*x+z*z)))/2),O=HR(C[0]*C[0]+C[1]*C[1]);M=PR(T,(d-O)/(v-1)),g=PR(T,(u-O)/(v+1))}}V>qR?g>qR?(F=dS(D,f,B,J,u,g,p),b=dS(X,I,k,Y,u,g,p),r.moveTo(F.cx+F.x01,F.cy+F.y01),gqR&&W>qR?M>qR?(F=dS(k,Y,X,I,d,-M,p),b=dS(B,J,D,f,d,-M,p),r.lineTo(F.cx+F.x01,F.cy+F.y01),M=d;--u)r.point(F[u],b[u]);r.lineEnd(),r.areaEnd()}p&&(F[c]=+t(h,c,o),b[c]=+n(h,c,o),r.point(e?+e(h,c,o):F[c],l?+l(h,c,o):b[c]))}if(m)return r=null,m+""||null}function c(){return FS().defined(i).curve(s).context(a)}return o.x=function(n){return arguments.length?(t="function"==typeof n?n:vR(+n),e=null,o):t},o.x0=function(e){return arguments.length?(t="function"==typeof e?e:vR(+e),o):t},o.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:vR(+t),o):e},o.y=function(t){return arguments.length?(n="function"==typeof t?t:vR(+t),l=null,o):n},o.y0=function(t){return arguments.length?(n="function"==typeof t?t:vR(+t),o):n},o.y1=function(t){return arguments.length?(l=null==t?null:"function"==typeof t?t:vR(+t),o):l},o.lineX0=o.lineY0=function(){return c().x(t).y(n)},o.lineY1=function(){return c().x(t).y(l)},o.lineX1=function(){return c().x(e).y(n)},o.defined=function(t){return arguments.length?(i="function"==typeof t?t:vR(!!t),o):i},o.curve=function(t){return arguments.length?(s=t,null!=a&&(r=s(a)),o):s},o.context=function(t){return arguments.length?(null==t?a=r=null:r=s(a=t),o):a},o}function ZS(t,e){return et?1:e>=t?0:NaN}function NS(t){return t}function RS(){var t=NS,e=ZS,n=null,l=vR(0),i=vR(eS),a=vR(0);function s(s){var r,o,c,d,u,h=s.length,m=0,U=new Array(h),p=new Array(h),F=+l.apply(this,arguments),b=Math.min(eS,Math.max(-eS,i.apply(this,arguments)-F)),Z=Math.min(Math.abs(b)/h,a.apply(this,arguments)),N=Z*(b<0?-1:1);for(r=0;r0&&(m+=u);for(null!=e?U.sort((function(t,n){return e(p[t],p[n])})):null!=n&&U.sort((function(t,e){return n(s[t],s[e])})),r=0,c=m?(b-h*N)/m:0;r0?u*c:0)+N,p[o]={data:s[o],index:r,value:u,startAngle:F,endAngle:d,padAngle:Z};return p}return s.value=function(e){return arguments.length?(t="function"==typeof e?e:vR(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(l="function"==typeof t?t:vR(+t),s):l},s.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:vR(+t),s):i},s.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:vR(+t),s):a},s}hS.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var SS=VS(mS);function WS(t){this._curve=t}function VS(t){function e(e){return new WS(t(e))}return e._curve=t,e}function QS(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(VS(t)):e()._curve},t}function yS(){return QS(FS().curve(SS))}function TS(){var t=bS().curve(SS),e=t.curve,n=t.lineX0,l=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return QS(n())},delete t.lineX0,t.lineEndAngle=function(){return QS(l())},delete t.lineX1,t.lineInnerRadius=function(){return QS(i())},delete t.lineY0,t.lineOuterRadius=function(){return QS(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(VS(t)):e()._curve},t}function MS(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}WS.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var gS=Array.prototype.slice;function ES(t){return t.source}function GS(t){return t.target}function BS(t){var e=ES,n=GS,l=US,i=pS,a=null;function s(){var s,r=gS.call(arguments),o=e.apply(this,r),c=n.apply(this,r);if(a||(a=s=_i()),t(a,+l.apply(this,(r[0]=o,r)),+i.apply(this,r),+l.apply(this,(r[0]=c,r)),+i.apply(this,r)),s)return a=null,s+""||null}return s.source=function(t){return arguments.length?(e=t,s):e},s.target=function(t){return arguments.length?(n=t,s):n},s.x=function(t){return arguments.length?(l="function"==typeof t?t:vR(+t),s):l},s.y=function(t){return arguments.length?(i="function"==typeof t?t:vR(+t),s):i},s.context=function(t){return arguments.length?(a=null==t?null:t,s):a},s}function JS(t,e,n,l,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+l)/2,n,e,i,l,i)}function kS(t,e,n,l,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,l,n,l,i)}function YS(t,e,n,l,i){var a=MS(e,n),s=MS(e,n=(n+i)/2),r=MS(l,n),o=MS(l,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(s[0],s[1],r[0],r[1],o[0],o[1])}function CS(){return BS(JS)}function XS(){return BS(kS)}function IS(){var t=BS(YS);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}const DS={draw:function(t,e){var n=Math.sqrt(e/$R);t.moveTo(n,0),t.arc(0,0,n,0,eS)}},fS={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}};var LS=Math.sqrt(1/3),wS=2*LS;const xS={draw:function(t,e){var n=Math.sqrt(e/wS),l=n*LS;t.moveTo(0,-n),t.lineTo(l,0),t.lineTo(0,n),t.lineTo(-l,0),t.closePath()}};var zS=Math.sin($R/10)/Math.sin(7*$R/10),vS=Math.sin(eS/10)*zS,OS=-Math.cos(eS/10)*zS;const _S={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),l=vS*n,i=OS*n;t.moveTo(0,-n),t.lineTo(l,i);for(var a=1;a<5;++a){var s=eS*a/5,r=Math.cos(s),o=Math.sin(s);t.lineTo(o*n,-r*n),t.lineTo(r*l-o*i,o*l+r*i)}t.closePath()}},jS={draw:function(t,e){var n=Math.sqrt(e),l=-n/2;t.rect(l,l,n,n)}};var KS=Math.sqrt(3);const PS={draw:function(t,e){var n=-Math.sqrt(e/(3*KS));t.moveTo(0,2*n),t.lineTo(-KS*n,-n),t.lineTo(KS*n,-n),t.closePath()}};var AS=-.5,HS=Math.sqrt(3)/2,qS=1/Math.sqrt(12),$S=3*(qS/2+1);const tW={draw:function(t,e){var n=Math.sqrt(e/$S),l=n/2,i=n*qS,a=l,s=n*qS+n,r=-a,o=s;t.moveTo(l,i),t.lineTo(a,s),t.lineTo(r,o),t.lineTo(AS*l-HS*i,HS*l+AS*i),t.lineTo(AS*a-HS*s,HS*a+AS*s),t.lineTo(AS*r-HS*o,HS*r+AS*o),t.lineTo(AS*l+HS*i,AS*i-HS*l),t.lineTo(AS*a+HS*s,AS*s-HS*a),t.lineTo(AS*r+HS*o,AS*o-HS*r),t.closePath()}};var eW=[DS,fS,xS,jS,_S,PS,tW];function nW(){var t=vR(DS),e=vR(64),n=null;function l(){var l;if(n||(n=l=_i()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),l)return n=null,l+""||null}return l.type=function(e){return arguments.length?(t="function"==typeof e?e:vR(e),l):t},l.size=function(t){return arguments.length?(e="function"==typeof t?t:vR(+t),l):e},l.context=function(t){return arguments.length?(n=null==t?null:t,l):n},l}function lW(){}function iW(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function aW(t){this._context=t}function sW(t){return new aW(t)}function rW(t){this._context=t}function oW(t){return new rW(t)}function cW(t){this._context=t}function dW(t){return new cW(t)}function uW(t,e){this._basis=new aW(t),this._beta=e}aW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:iW(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},rW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},cW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,l=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,l):this._context.moveTo(n,l);break;case 3:this._point=4;default:iW(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},uW.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var l,i=t[0],a=e[0],s=t[n]-i,r=e[n]-a,o=-1;++o<=n;)l=o/n,this._basis.point(this._beta*t[o]+(1-this._beta)*(i+l*s),this._beta*e[o]+(1-this._beta)*(a+l*r));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const hW=function t(e){function n(t){return 1===e?new aW(t):new uW(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function mW(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function UW(t,e){this._context=t,this._k=(1-e)/6}UW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:mW(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const pW=function t(e){function n(t){return new UW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function FW(t,e){this._context=t,this._k=(1-e)/6}FW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const bW=function t(e){function n(t){return new FW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function ZW(t,e){this._context=t,this._k=(1-e)/6}ZW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:mW(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const NW=function t(e){function n(t){return new ZW(t,e)}return n.tension=function(e){return t(+e)},n}(0);function RW(t,e,n){var l=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>qR){var r=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,o=3*t._l01_a*(t._l01_a+t._l12_a);l=(l*r-t._x0*t._l12_2a+t._x2*t._l01_2a)/o,i=(i*r-t._y0*t._l12_2a+t._y2*t._l01_2a)/o}if(t._l23_a>qR){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,d=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/d,s=(s*c+t._y1*t._l23_2a-n*t._l12_2a)/d}t._context.bezierCurveTo(l,i,a,s,t._x2,t._y2)}function SW(t,e){this._context=t,this._alpha=e}SW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const WW=function t(e){function n(t){return e?new SW(t,e):new UW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function VW(t,e){this._context=t,this._alpha=e}VW.prototype={areaStart:lW,areaEnd:lW,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const QW=function t(e){function n(t){return e?new VW(t,e):new FW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function yW(t,e){this._context=t,this._alpha=e}yW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,l=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+l*l,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:RW(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const TW=function t(e){function n(t){return e?new yW(t,e):new ZW(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function MW(t){this._context=t}function gW(t){return new MW(t)}function EW(t){return t<0?-1:1}function GW(t,e,n){var l=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(l||i<0&&-0),s=(n-t._y1)/(i||l<0&&-0),r=(a*i+s*l)/(l+i);return(EW(a)+EW(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(r))||0}function BW(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function JW(t,e,n){var l=t._x0,i=t._y0,a=t._x1,s=t._y1,r=(a-l)/3;t._context.bezierCurveTo(l+r,i+r*e,a-r,s-r*n,a,s)}function kW(t){this._context=t}function YW(t){this._context=new CW(t)}function CW(t){this._context=t}function XW(t){return new kW(t)}function IW(t){return new YW(t)}function DW(t){this._context=t}function fW(t){var e,n,l=t.length-1,i=new Array(l),a=new Array(l),s=new Array(l);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[l-1]=(t[l]+i[l-1])/2,e=0;e1)for(var n,l,i,a=1,s=t[e[0]],r=s.length;a=0;)n[e]=e;return n}function jW(t,e){return t[e]}function KW(){var t=vR([]),e=_W,n=OW,l=jW;function i(i){var a,s,r=t.apply(this,arguments),o=i.length,c=r.length,d=new Array(c);for(a=0;a0){for(var n,l,i,a=0,s=t[0].length;a0)for(var n,l,i,a,s,r,o=0,c=t[e[0]].length;o0?(l[0]=a,l[1]=a+=i):i<0?(l[1]=s,l[0]=s+=i):(l[0]=0,l[1]=i)}function HW(t,e){if((n=t.length)>0){for(var n,l=0,i=t[e[0]],a=i.length;l0&&(l=(n=t[e[0]]).length)>0){for(var n,l,i,a=0,s=1;sa&&(a=e,l=n);return l}function eV(t){var e=t.map(nV);return _W(t).sort((function(t,n){return e[t]-e[n]}))}function nV(t){for(var e,n=0,l=-1,i=t.length;++l=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var sV="%Y-%m-%dT%H:%M:%S.%LZ",rV=Date.prototype.toISOString?function(t){return t.toISOString()}:pb(sV);const oV=rV;var cV=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:Fb(sV);const dV=cV;function uV(t,e,n){var l=new _n,i=e;return null==e?(l.restart(t,e,n),l):(e=+e,n=null==n?vn():+n,l.restart((function a(s){s+=i,l.restart(a,i+=e,n),t(s)}),e,n),l)}function hV(t){return function(){return t}}function mV(t){return t[0]}function UV(t){return t[1]}function pV(){this._=null}function FV(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function bV(t,e){var n=e,l=e.R,i=n.U;i?i.L===n?i.L=l:i.R=l:t._=l,l.U=i,n.U=l,n.R=l.L,n.R&&(n.R.U=n),l.L=n}function ZV(t,e){var n=e,l=e.L,i=n.U;i?i.L===n?i.L=l:i.R=l:t._=l,l.U=i,n.U=l,n.L=l.R,n.L&&(n.L.U=n),l.R=n}function NV(t){for(;t.L;)t=t.L;return t}pV.prototype={constructor:pV,insert:function(t,e){var n,l,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=NV(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(l=n.U).L?(i=l.R)&&i.C?(n.C=i.C=!1,l.C=!0,t=l):(t===n.R&&(bV(this,n),n=(t=n).U),n.C=!1,l.C=!0,ZV(this,l)):(i=l.L)&&i.C?(n.C=i.C=!1,l.C=!0,t=l):(t===n.L&&(ZV(this,n),n=(t=n).U),n.C=!1,l.C=!0,bV(this,l)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,l,i=t.U,a=t.L,s=t.R;if(n=a?s?NV(s):a:s,i?i.L===t?i.L=n:i.R=n:this._=n,a&&s?(l=n.C,n.C=t.C,n.L=a,a.U=n,n!==s?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=s,s.U=n):(n.U=i,i=n,t=n.R)):(l=t.C,t=n),t&&(t.U=i),!l)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,bV(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,ZV(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,bV(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,ZV(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,bV(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,ZV(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};const RV=pV;function SV(t,e,n,l){var i=[null,null],a=OV.push(i)-1;return i.left=t,i.right=e,n&&VV(i,t,e,n),l&&VV(i,e,t,l),zV[t.index].halfedges.push(a),zV[e.index].halfedges.push(a),i}function WV(t,e,n){var l=[e,n];return l.left=t,l}function VV(t,e,n,l){t[0]||t[1]?t.left===n?t[1]=l:t[0]=l:(t[0]=l,t.left=e,t.right=n)}function QV(t,e,n,l,i){var a,s=t[0],r=t[1],o=s[0],c=s[1],d=0,u=1,h=r[0]-o,m=r[1]-c;if(a=e-o,h||!(a>0)){if(a/=h,h<0){if(a0){if(a>u)return;a>d&&(d=a)}if(a=l-o,h||!(a<0)){if(a/=h,h<0){if(a>u)return;a>d&&(d=a)}else if(h>0){if(a0)){if(a/=m,m<0){if(a0){if(a>u)return;a>d&&(d=a)}if(a=i-c,m||!(a<0)){if(a/=m,m<0){if(a>u)return;a>d&&(d=a)}else if(m>0){if(a0||u<1)||(d>0&&(t[0]=[o+d*h,c+d*m]),u<1&&(t[1]=[o+u*h,c+u*m]),!0)}}}}}function yV(t,e,n,l,i){var a=t[1];if(a)return!0;var s,r,o=t[0],c=t.left,d=t.right,u=c[0],h=c[1],m=d[0],U=d[1],p=(u+m)/2,F=(h+U)/2;if(U===h){if(p=l)return;if(u>m){if(o){if(o[1]>=i)return}else o=[p,n];a=[p,i]}else{if(o){if(o[1]1)if(u>m){if(o){if(o[1]>=i)return}else o=[(n-r)/s,n];a=[(i-r)/s,i]}else{if(o){if(o[1]=l)return}else o=[e,s*e+r];a=[l,s*l+r]}else{if(o){if(o[0]=-jV)){var m=o*o+c*c,U=d*d+u*u,p=(u*m-c*U)/h,F=(o*U-d*m)/h,b=GV.pop()||new BV;b.arc=t,b.site=i,b.x=p+s,b.y=(b.cy=F+r)+Math.sqrt(p*p+F*F),t.circle=b;for(var Z=null,N=vV._;N;)if(b.y_V)r=r.L;else{if(!((i=a-wV(r,s))>_V)){l>-_V?(e=r.P,n=r):i>-_V?(e=r,n=r.N):e=n=r;break}if(!r.R){e=r;break}r=r.R}!function(t){zV[t.index]={site:t,halfedges:[]}}(t);var o=XV(t);if(xV.insert(e,o),e||n){if(e===n)return kV(e),n=XV(e.site),xV.insert(o,n),o.edge=n.edge=SV(e.site,o.site),JV(e),void JV(n);if(n){kV(e),kV(n);var c=e.site,d=c[0],u=c[1],h=t[0]-d,m=t[1]-u,U=n.site,p=U[0]-d,F=U[1]-u,b=2*(h*F-m*p),Z=h*h+m*m,N=p*p+F*F,R=[(F*Z-m*N)/b+d,(h*N-p*Z)/b+u];VV(n.edge,c,U,R),o.edge=SV(c,t,null,R),n.edge=SV(t,U,null,R),JV(e),JV(n)}else o.edge=SV(e.site,o.site)}}function LV(t,e){var n=t.site,l=n[0],i=n[1],a=i-e;if(!a)return l;var s=t.P;if(!s)return-1/0;var r=(n=s.site)[0],o=n[1],c=o-e;if(!c)return r;var d=r-l,u=1/a-1/c,h=d/c;return u?(-h+Math.sqrt(h*h-2*u*(d*d/(-2*c)-o+c/2+i-a/2)))/u+l:(l+r)/2}function wV(t,e){var n=t.N;if(n)return LV(n,e);var l=t.site;return l[1]===e?l[0]:1/0}var xV,zV,vV,OV,_V=1e-6,jV=1e-12;function KV(t,e,n){return(t[0]-n[0])*(e[1]-t[1])-(t[0]-e[0])*(n[1]-t[1])}function PV(t,e){return e[1]-t[1]||e[0]-t[0]}function AV(t,e){var n,l,i,a=t.sort(PV).pop();for(OV=[],zV=new Array(t.length),xV=new RV,vV=new RV;;)if(i=EV,a&&(!i||a[1]_V||Math.abs(i[0][1]-i[1][1])>_V)||delete OV[a]}(s,r,o,c),function(t,e,n,l){var i,a,s,r,o,c,d,u,h,m,U,p,F=zV.length,b=!0;for(i=0;i_V||Math.abs(p-h)>_V)&&(o.splice(r,0,OV.push(WV(s,m,Math.abs(U-t)<_V&&l-p>_V?[t,Math.abs(u-t)<_V?h:l]:Math.abs(p-l)<_V&&n-U>_V?[Math.abs(h-l)<_V?u:n,l]:Math.abs(U-n)<_V&&p-e>_V?[n,Math.abs(u-n)<_V?h:e]:Math.abs(p-e)<_V&&U-t>_V?[Math.abs(h-e)<_V?u:t,e]:null))-1),++c);c&&(b=!1)}if(b){var Z,N,R,S=1/0;for(i=0,b=null;i=r)return null;var o=t-i.site[0],c=e-i.site[1],d=o*o+c*c;do{i=a.cells[l=s],s=null,i.halfedges.forEach((function(n){var l=a.edges[n],r=l.left;if(r!==i.site&&r||(r=l.right)){var o=t-r[0],c=e-r[1],u=o*o+c*c;ul?(l+i)/2:Math.min(0,l)||Math.max(0,i),s>a?(a+s)/2:Math.min(0,a)||Math.max(0,s))}function uQ(){var t,e,n=aQ,l=sQ,i=dQ,a=oQ,s=cQ,r=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],c=250,d=BU,u=ht("start","zoom","end"),h=500,m=0;function U(t){t.property("__zoom",rQ).on("wheel.zoom",S).on("mousedown.zoom",W).on("dblclick.zoom",V).filter(s).on("touchstart.zoom",Q).on("touchmove.zoom",y).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(r[0],Math.min(r[1],e)))===t.k?t:new tQ(e,t.x,t.y)}function F(t,e,n){var l=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return l===t.x&&i===t.y?t:new tQ(t.k,l,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function Z(t,e,n){t.on("start.zoom",(function(){N(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){N(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=N(t,i),s=l.apply(t,i),r=null==n?b(s):"function"==typeof n?n.apply(t,i):n,o=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),c=t.__zoom,u="function"==typeof e?e.apply(t,i):e,h=d(c.invert(r).concat(o/c.k),u.invert(r).concat(o/u.k));return function(t){if(1===t)t=u;else{var e=h(t),n=o/e[2];t=new tQ(n,r[0]-e[0]*n,r[1]-e[1]*n)}a.zoom(null,t)}}))}function N(t,e,n){return!n&&t.__zooming||new R(t,e)}function R(t,e){this.that=t,this.args=e,this.active=0,this.extent=l.apply(t,e),this.taps=0}function S(){if(n.apply(this,arguments)){var t=N(this,arguments),e=this.__zoom,l=Math.max(r[0],Math.min(r[1],e.k*Math.pow(2,a.apply(this,arguments)))),s=kn(this);if(t.wheel)t.mouse[0][0]===s[0]&&t.mouse[0][1]===s[1]||(t.mouse[1]=e.invert(t.mouse[0]=s)),clearTimeout(t.wheel);else{if(e.k===l)return;t.mouse=[s,e.invert(s)],al(this),t.start()}iQ(),t.wheel=setTimeout(c,150),t.zoom("mouse",i(F(p(e,l),t.mouse[0],t.mouse[1]),t.extent,o))}function c(){t.wheel=null,t.end()}}function W(){if(!e&&n.apply(this,arguments)){var t=N(this,arguments,!0),l=Qe(de.view).on("mousemove.zoom",c,!0).on("mouseup.zoom",d,!0),a=kn(this),s=de.clientX,r=de.clientY;Me(de.view),lQ(),t.mouse=[a,this.__zoom.invert(a)],al(this),t.start()}function c(){if(iQ(),!t.moved){var e=de.clientX-s,n=de.clientY-r;t.moved=e*e+n*n>m}t.zoom("mouse",i(F(t.that.__zoom,t.mouse[0]=kn(t.that),t.mouse[1]),t.extent,o))}function d(){l.on("mousemove.zoom mouseup.zoom",null),ge(de.view,t.moved),iQ(),t.end()}}function V(){if(n.apply(this,arguments)){var t=this.__zoom,e=kn(this),a=t.invert(e),s=t.k*(de.shiftKey?.5:2),r=i(F(p(t,s),e,a),l.apply(this,arguments),o);iQ(),c>0?Qe(this).transition().duration(c).call(Z,r,e):Qe(this).call(U.transform,r)}}function Q(){if(n.apply(this,arguments)){var e,l,i,a,s=de.touches,r=s.length,o=N(this,arguments,de.changedTouches.length===r);for(lQ(),l=0;l{t.exports={graphlib:n(574),layout:n(8123),debug:n(7570),util:{time:n(1138).time,notime:n(1138).notime},version:n(8177)}},1207:(t,e,n)=>{var l=n(8436),i=n(4079);t.exports={run:function(t){var e="greedy"===t.graph().acyclicer?i(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};return l.forEach(t.nodes(),(function a(s){l.has(i,s)||(i[s]=!0,n[s]=!0,l.forEach(t.outEdges(s),(function(t){l.has(n,t.w)?e.push(t):a(t.w)})),delete n[s])})),e}(t);l.forEach(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,l.uniqueId("rev"))}))},undo:function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var l=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,l)}}))}}},1133:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n,l,a,s){var r={width:0,height:0,rank:s,borderType:e},o=a[e][s-1],c=i.addDummyNode(t,"border",r,n);a[e][s]=c,t.setParent(c,l),o&&t.setEdge(o,c,{weight:1})}t.exports=function(t){l.forEach(t.children(),(function e(n){var i=t.children(n),s=t.node(n);if(i.length&&l.forEach(i,e),l.has(s,"minRank")){s.borderLeft=[],s.borderRight=[];for(var r=s.minRank,o=s.maxRank+1;r{var l=n(8436);function i(t){l.forEach(t.nodes(),(function(e){a(t.node(e))})),l.forEach(t.edges(),(function(e){a(t.edge(e))}))}function a(t){var e=t.width;t.width=t.height,t.height=e}function s(t){t.y=-t.y}function r(t){var e=t.x;t.x=t.y,t.y=e}t.exports={adjust:function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||i(t)},undo:function(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){l.forEach(t.nodes(),(function(e){s(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.forEach(n.points,s),l.has(n,"y")&&s(n)}))}(t),"lr"!==e&&"rl"!==e||(function(t){l.forEach(t.nodes(),(function(e){r(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.forEach(n.points,r),l.has(n,"x")&&r(n)}))}(t),i(t))}}},7822:t=>{function e(){var t={};t._next=t._prev=t,this._sentinel=t}function n(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function l(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=e,e.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return n(e),e},e.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&n(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},e.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,l)),n=n._prev;return"["+t.join(", ")+"]"}},7570:(t,e,n)=>{var l=n(8436),i=n(1138),a=n(574).Graph;t.exports={debugOrdering:function(t){var e=i.buildLayerMatrix(t),n=new a({compound:!0,multigraph:!0}).setGraph({});return l.forEach(t.nodes(),(function(e){n.setNode(e,{label:e}),n.setParent(e,"layer"+t.node(e).rank)})),l.forEach(t.edges(),(function(t){n.setEdge(t.v,t.w,{},t.name)})),l.forEach(e,(function(t,e){var i="layer"+e;n.setNode(i,{rank:"same"}),l.reduce(t,(function(t,e){return n.setEdge(t,e,{style:"invis"}),e}))})),n}}},574:(t,e,n)=>{var l;try{l=n(8282)}catch(t){}l||(l=window.graphlib),t.exports=l},4079:(t,e,n)=>{var l=n(8436),i=n(574).Graph,a=n(7822);t.exports=function(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new i,s=0,r=0;l.forEach(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),l.forEach(t.edges(),(function(t){var l=n.edge(t.v,t.w)||0,i=e(t),a=l+i;n.setEdge(t.v,t.w,a),r=Math.max(r,n.node(t.v).out+=i),s=Math.max(s,n.node(t.w).in+=i)}));var c=l.range(r+s+3).map((function(){return new a})),d=s+1;return l.forEach(n.nodes(),(function(t){o(c,d,n.node(t))})),{graph:n,buckets:c,zeroIdx:d}}(t,e||s),c=function(t,e,n){for(var l,i=[],a=e[e.length-1],s=e[0];t.nodeCount();){for(;l=s.dequeue();)r(t,e,n,l);for(;l=a.dequeue();)r(t,e,n,l);if(t.nodeCount())for(var o=e.length-2;o>0;--o)if(l=e[o].dequeue()){i=i.concat(r(t,e,n,l,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return l.flatten(l.map(c,(function(e){return t.outEdges(e.v,e.w)})),!0)};var s=l.constant(1);function r(t,e,n,i,a){var s=a?[]:void 0;return l.forEach(t.inEdges(i.v),(function(l){var i=t.edge(l),r=t.node(l.v);a&&s.push({v:l.v,w:l.w}),r.out-=i,o(e,n,r)})),l.forEach(t.outEdges(i.v),(function(l){var i=t.edge(l),a=l.w,s=t.node(a);s.in-=i,o(e,n,s)})),t.removeNode(i.v),s}function o(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},8123:(t,e,n)=>{var l=n(8436),i=n(1207),a=n(5995),s=n(8093),r=n(1138).normalizeRanks,o=n(4219),c=n(1138).removeEmptyRanks,d=n(2981),u=n(1133),h=n(3258),m=n(3408),U=n(7873),p=n(1138),F=n(574).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?p.time:p.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new F({multigraph:!0,compound:!0}),n=T(t.graph());return e.setGraph(l.merge({},Z,y(n,b),l.pick(n,N))),l.forEach(t.nodes(),(function(n){var i=T(t.node(n));e.setNode(n,l.defaults(y(i,R),S)),e.setParent(n,t.parent(n))})),l.forEach(t.edges(),(function(n){var i=T(t.edge(n));e.setEdge(n,l.merge({},V,y(i,W),l.pick(i,Q)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,l.forEach(t.edges(),(function(n){var l=t.edge(n);l.minlen*=2,"c"!==l.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?l.width+=l.labeloffset:l.height+=l.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){l.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){d.run(t)})),e(" rank",(function(){s(p.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var l=t.node(e.v),i={rank:(t.node(e.w).rank-l.rank)/2+l.rank,e:e};p.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){c(t)})),e(" nestingGraph.cleanup",(function(){d.cleanup(t)})),e(" normalizeRanks",(function(){r(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;l.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=l.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){l.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){o(t)})),e(" addBorderSegments",(function(){u(t)})),e(" order",(function(){m(t)})),e(" insertSelfEdges",(function(){!function(t){var e=p.buildLayerMatrix(t);l.forEach(e,(function(e){var n=0;l.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,l.forEach(a.selfEdges,(function(e){p.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){h.adjust(t)})),e(" position",(function(){U(t)})),e(" positionSelfEdges",(function(){!function(t){l.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var l=t.node(n.e.v),i=l.x+l.width/2,a=l.y,s=n.x-i,r=l.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*s/3,y:a-r},{x:i+5*s/6,y:a-r},{x:i+s,y:a},{x:i+5*s/6,y:a+r},{x:i+2*s/3,y:a+r}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){l.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),s=t.node(l.last(n.borderLeft)),r=t.node(l.last(n.borderRight));n.width=Math.abs(r.x-s.x),n.height=Math.abs(a.y-i.y),n.x=s.x+n.width/2,n.y=i.y+n.height/2}})),l.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);if(l.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){h.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,s=t.graph(),r=s.marginx||0,o=s.marginy||0;function c(t){var l=t.x,s=t.y,r=t.width,o=t.height;e=Math.min(e,l-r/2),n=Math.max(n,l+r/2),i=Math.min(i,s-o/2),a=Math.max(a,s+o/2)}l.forEach(t.nodes(),(function(e){c(t.node(e))})),l.forEach(t.edges(),(function(e){var n=t.edge(e);l.has(n,"x")&&c(n)})),e-=r,i-=o,l.forEach(t.nodes(),(function(n){var l=t.node(n);l.x-=e,l.y-=i})),l.forEach(t.edges(),(function(n){var a=t.edge(n);l.forEach(a.points,(function(t){t.x-=e,t.y-=i})),l.has(a,"x")&&(a.x-=e),l.has(a,"y")&&(a.y-=i)})),s.width=n-e+r,s.height=a-i+o}(t)})),e(" assignNodeIntersects",(function(){!function(t){l.forEach(t.edges(),(function(e){var n,l,i=t.edge(e),a=t.node(e.v),s=t.node(e.w);i.points?(n=i.points[0],l=i.points[i.points.length-1]):(i.points=[],n=s,l=a),i.points.unshift(p.intersectRect(a,n)),i.points.push(p.intersectRect(s,l))}))}(t)})),e(" reversePoints",(function(){!function(t){l.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){l.forEach(t.nodes(),(function(n){var l=t.node(n),i=e.node(n);l&&(l.x=i.x,l.y=i.y,e.children(n).length&&(l.width=i.width,l.height=i.height))})),l.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,l.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var b=["nodesep","edgesep","ranksep","marginx","marginy"],Z={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},N=["acyclicer","ranker","rankdir","align"],R=["width","height"],S={width:0,height:0},W=["minlen","weight","width","height","labeloffset"],V={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Q=["labelpos"];function y(t,e){return l.mapValues(l.pick(t,e),Number)}function T(t){var e={};return l.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},8436:(t,e,n)=>{var l;try{l={cloneDeep:n(361),constant:n(5703),defaults:n(1747),each:n(6073),filter:n(3105),find:n(3311),flatten:n(5564),forEach:n(4486),forIn:n(2620),has:n(8721),isUndefined:n(2353),last:n(928),map:n(5161),mapValues:n(6604),max:n(6162),merge:n(3857),min:n(3632),minBy:n(2762),now:n(7771),pick:n(9722),range:n(6026),reduce:n(4061),sortBy:n(9734),uniqueId:n(3955),values:n(2628),zipObject:n(7287)}}catch(t){}l||(l=window._),t.exports=l},2981:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n,s,r,o,c){var d=t.children(c);if(d.length){var u=i.addBorderNode(t,"_bt"),h=i.addBorderNode(t,"_bb"),m=t.node(c);t.setParent(u,c),m.borderTop=u,t.setParent(h,c),m.borderBottom=h,l.forEach(d,(function(l){a(t,e,n,s,r,o,l);var i=t.node(l),d=i.borderTop?i.borderTop:l,m=i.borderBottom?i.borderBottom:l,U=i.borderTop?s:2*s,p=d!==m?1:r-o[c]+1;t.setEdge(u,d,{weight:U,minlen:p,nestingEdge:!0}),t.setEdge(m,h,{weight:U,minlen:p,nestingEdge:!0})})),t.parent(c)||t.setEdge(e,u,{weight:0,minlen:r+o[c]})}else c!==e&&t.setEdge(e,c,{weight:0,minlen:n})}t.exports={run:function(t){var e=i.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};function n(i,a){var s=t.children(i);s&&s.length&&l.forEach(s,(function(t){n(t,a+1)})),e[i]=a}return l.forEach(t.children(),(function(t){n(t,1)})),e}(t),s=l.max(l.values(n))-1,r=2*s+1;t.graph().nestingRoot=e,l.forEach(t.edges(),(function(e){t.edge(e).minlen*=r}));var o=function(t){return l.reduce(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;l.forEach(t.children(),(function(l){a(t,e,r,o,s,n,l)})),t.graph().nodeRankFactor=r},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,l.forEach(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},5995:(t,e,n)=>{var l=n(8436),i=n(1138);t.exports={run:function(t){t.graph().dummyChains=[],l.forEach(t.edges(),(function(e){!function(t,e){var n,l,a,s=e.v,r=t.node(s).rank,o=e.w,c=t.node(o).rank,d=e.name,u=t.edge(e),h=u.labelRank;if(c!==r+1){for(t.removeEdge(e),a=0,++r;r{var l=n(8436);t.exports=function(t,e,n){var i,a={};l.forEach(n,(function(n){for(var l,s,r=t.parent(n);r;){if((l=t.parent(r))?(s=a[l],a[l]=r):(s=i,i=r),s&&s!==r)return void e.setEdge(s,r);r=l}}))}},5439:(t,e,n)=>{var l=n(8436);t.exports=function(t,e){return l.map(e,(function(e){var n=t.inEdges(e);if(n.length){var i=l.reduce(n,(function(e,n){var l=t.edge(n),i=t.node(n.v);return{sum:e.sum+l.weight*i.order,weight:e.weight+l.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}},3128:(t,e,n)=>{var l=n(8436),i=n(574).Graph;t.exports=function(t,e,n){var a=function(t){for(var e;t.hasNode(e=l.uniqueId("_root")););return e}(t),s=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return l.forEach(t.nodes(),(function(i){var r=t.node(i),o=t.parent(i);(r.rank===e||r.minRank<=e&&e<=r.maxRank)&&(s.setNode(i),s.setParent(i,o||a),l.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=s.edge(n,i),r=l.isUndefined(a)?0:a.weight;s.setEdge(n,i,{weight:t.edge(e).weight+r})})),l.has(r,"minRank")&&s.setNode(i,{borderLeft:r.borderLeft[e],borderRight:r.borderRight[e]}))})),s}},6630:(t,e,n)=>{var l=n(8436);function i(t,e,n){for(var i=l.zipObject(n,l.map(n,(function(t,e){return e}))),a=l.flatten(l.map(e,(function(e){return l.sortBy(l.map(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")})),!0),s=1;s0;)e%2&&(n+=o[e+1]),o[e=e-1>>1]+=t.weight;c+=t.weight*n}))),c}t.exports=function(t,e){for(var n=0,l=1;l{var l=n(8436),i=n(2588),a=n(6630),s=n(1026),r=n(3128),o=n(5093),c=n(574).Graph,d=n(1138);function u(t,e,n){return l.map(e,(function(e){return r(t,e,n)}))}function h(t,e){var n=new c;l.forEach(t,(function(t){var i=t.graph().root,a=s(t,i,n,e);l.forEach(a.vs,(function(e,n){t.node(e).order=n})),o(t,n,a.vs)}))}function m(t,e){l.forEach(e,(function(e){l.forEach(e,(function(e,n){t.node(e).order=n}))}))}t.exports=function(t){var e=d.maxRank(t),n=u(t,l.range(1,e+1),"inEdges"),s=u(t,l.range(e-1,-1,-1),"outEdges"),r=i(t);m(t,r);for(var o,c=Number.POSITIVE_INFINITY,U=0,p=0;p<4;++U,++p){h(U%2?n:s,U%4>=2),r=d.buildLayerMatrix(t);var F=a(t,r);F{var l=n(8436);t.exports=function(t){var e={},n=l.filter(t.nodes(),(function(e){return!t.children(e).length})),i=l.max(l.map(n,(function(e){return t.node(e).rank}))),a=l.map(l.range(i+1),(function(){return[]})),s=l.sortBy(n,(function(e){return t.node(e).rank}));return l.forEach(s,(function n(i){if(!l.has(e,i)){e[i]=!0;var s=t.node(i);a[s.rank].push(i),l.forEach(t.successors(i),n)}})),a}},9567:(t,e,n)=>{var l=n(8436);t.exports=function(t,e){var n={};return l.forEach(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};l.isUndefined(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),l.forEach(e.edges(),(function(t){var e=n[t.v],i=n[t.w];l.isUndefined(e)||l.isUndefined(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){var n,i,a,s;e.merged||(l.isUndefined(e.barycenter)||l.isUndefined(t.barycenter)||e.barycenter>=t.barycenter)&&(i=e,a=0,s=0,(n=t).weight&&(a+=n.barycenter*n.weight,s+=n.weight),i.weight&&(a+=i.barycenter*i.weight,s+=i.weight),n.vs=i.vs.concat(n.vs),n.barycenter=a/s,n.weight=s,n.i=Math.min(i.i,n.i),i.merged=!0)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),l.forEach(a.in.reverse(),n(a)),l.forEach(a.out,i(a))}return l.map(l.filter(e,(function(t){return!t.merged})),(function(t){return l.pick(t,["vs","i","barycenter","weight"])}))}(l.filter(n,(function(t){return!t.indegree})))}},1026:(t,e,n)=>{var l=n(8436),i=n(5439),a=n(9567),s=n(7304);t.exports=function t(e,n,r,o){var c=e.children(n),d=e.node(n),u=d?d.borderLeft:void 0,h=d?d.borderRight:void 0,m={};u&&(c=l.filter(c,(function(t){return t!==u&&t!==h})));var U=i(e,c);l.forEach(U,(function(n){if(e.children(n.v).length){var i=t(e,n.v,r,o);m[n.v]=i,l.has(i,"barycenter")&&(a=n,s=i,l.isUndefined(a.barycenter)?(a.barycenter=s.barycenter,a.weight=s.weight):(a.barycenter=(a.barycenter*a.weight+s.barycenter*s.weight)/(a.weight+s.weight),a.weight+=s.weight))}var a,s}));var p=a(U,r);!function(t,e){l.forEach(t,(function(t){t.vs=l.flatten(t.vs.map((function(t){return e[t]?e[t].vs:t})),!0)}))}(p,m);var F=s(p,o);if(u&&(F.vs=l.flatten([u,F.vs,h],!0),e.predecessors(u).length)){var b=e.node(e.predecessors(u)[0]),Z=e.node(e.predecessors(h)[0]);l.has(F,"barycenter")||(F.barycenter=0,F.weight=0),F.barycenter=(F.barycenter*F.weight+b.order+Z.order)/(F.weight+2),F.weight+=2}return F}},7304:(t,e,n)=>{var l=n(8436),i=n(1138);function a(t,e,n){for(var i;e.length&&(i=l.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n,s=i.partition(t,(function(t){return l.has(t,"barycenter")})),r=s.lhs,o=l.sortBy(s.rhs,(function(t){return-t.i})),c=[],d=0,u=0,h=0;r.sort((n=!!e,function(t,e){return t.barycentere.barycenter?1:n?e.i-t.i:t.i-e.i})),h=a(c,o,h),l.forEach(r,(function(t){h+=t.vs.length,c.push(t.vs),d+=t.barycenter*t.weight,u+=t.weight,h=a(c,o,h)}));var m={vs:l.flatten(c,!0)};return u&&(m.barycenter=d/u,m.weight=u),m}},4219:(t,e,n)=>{var l=n(8436);t.exports=function(t){var e=function(t){var e={},n=0;return l.forEach(t.children(),(function i(a){var s=n;l.forEach(t.children(a),i),e[a]={low:s,lim:n++}})),e}(t);l.forEach(t.graph().dummyChains,(function(n){for(var l=t.node(n),i=l.edgeObj,a=function(t,e,n,l){var i,a,s=[],r=[],o=Math.min(e[n].low,e[l].low),c=Math.max(e[n].lim,e[l].lim);i=n;do{i=t.parent(i),s.push(i)}while(i&&(e[i].low>o||c>e[i].lim));for(a=i,i=l;(i=t.parent(i))!==a;)r.push(i);return{path:s.concat(r.reverse()),lca:a}}(t,e,i.v,i.w),s=a.path,r=a.lca,o=0,c=s[o],d=!0;n!==i.w;){if(l=t.node(n),d){for(;(c=s[o])!==r&&t.node(c).maxRank{var l=n(8436),i=n(574).Graph,a=n(1138);function s(t,e){var n={};return l.reduce(e,(function(e,i){var a=0,s=0,r=e.length,c=l.last(i);return l.forEach(i,(function(e,d){var u=function(t,e){if(t.node(e).dummy)return l.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=u?t.node(u).order:r;(u||e===c)&&(l.forEach(i.slice(s,d+1),(function(e){l.forEach(t.predecessors(e),(function(l){var i=t.node(l),s=i.order;!(sr)&&o(n,e,c)}))}))}return l.reduce(e,(function(e,n){var a,s=-1,r=0;return l.forEach(n,(function(l,o){if("border"===t.node(l).dummy){var c=t.predecessors(l);c.length&&(a=t.node(c[0]).order,i(n,r,o,s,a),r=o,s=a)}i(n,r,n.length,a,e.length)})),n})),n}function o(t,e,n){if(e>n){var l=e;e=n,n=l}var i=t[e];i||(t[e]=i={}),i[n]=!0}function c(t,e,n){if(e>n){var i=e;e=n,n=i}return l.has(t[e],n)}function d(t,e,n,i){var a={},s={},r={};return l.forEach(e,(function(t){l.forEach(t,(function(t,e){a[t]=t,s[t]=t,r[t]=e}))})),l.forEach(e,(function(t){var e=-1;l.forEach(t,(function(t){var o=i(t);if(o.length){o=l.sortBy(o,(function(t){return r[t]}));for(var d=(o.length-1)/2,u=Math.floor(d),h=Math.ceil(d);u<=h;++u){var m=o[u];s[t]===t&&e{var l=n(8436),i=n(1138),a=n(3573).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;l.forEach(e,(function(e){var i=l.max(l.map(e,(function(e){return t.node(e).height})));l.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),l.forEach(a(t),(function(e,n){t.node(n).x=e}))}},300:(t,e,n)=>{var l=n(8436),i=n(574).Graph,a=n(6681).slack;function s(t,e){return l.forEach(t.nodes(),(function n(i){l.forEach(e.nodeEdges(i),(function(l){var s=l.v,r=i===s?l.w:s;t.hasNode(r)||a(e,l)||(t.setNode(r,{}),t.setEdge(i,r,{}),n(r))}))})),t.nodeCount()}function r(t,e){return l.minBy(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return a(e,n)}))}function o(t,e,n){l.forEach(t.nodes(),(function(t){e.node(t).rank+=n}))}t.exports=function(t){var e,n,l=new i({directed:!1}),c=t.nodes()[0],d=t.nodeCount();for(l.setNode(c,{});s(l,t){var l=n(6681).longestPath,i=n(300),a=n(2472);t.exports=function(t){switch(t.graph().ranker){case"network-simplex":default:!function(t){a(t)}(t);break;case"tight-tree":!function(t){l(t),i(t)}(t);break;case"longest-path":s(t)}};var s=l},2472:(t,e,n)=>{var l=n(8436),i=n(300),a=n(6681).slack,s=n(6681).longestPath,r=n(574).alg.preorder,o=n(574).alg.postorder,c=n(1138).simplify;function d(t){t=c(t),s(t);var e,n=i(t);for(m(n),u(n,t);e=p(n);)b(n,t,e,F(n,t,e))}function u(t,e){var n=o(t,t.nodes());n=n.slice(0,n.length-1),l.forEach(n,(function(n){!function(t,e,n){var l=t.node(n).parent;t.edge(n,l).cutvalue=h(t,e,n)}(t,e,n)}))}function h(t,e,n){var i=t.node(n).parent,a=!0,s=e.edge(n,i),r=0;return s||(a=!1,s=e.edge(i,n)),r=s.weight,l.forEach(e.nodeEdges(n),(function(l){var s,o,c=l.v===n,d=c?l.w:l.v;if(d!==i){var u=c===a,h=e.edge(l).weight;if(r+=u?h:-h,s=n,o=d,t.hasEdge(s,o)){var m=t.edge(n,d).cutvalue;r+=u?-m:m}}})),r}function m(t,e){arguments.length<2&&(e=t.nodes()[0]),U(t,{},1,e)}function U(t,e,n,i,a){var s=n,r=t.node(i);return e[i]=!0,l.forEach(t.neighbors(i),(function(a){l.has(e,a)||(n=U(t,e,n,a,i))})),r.low=s,r.lim=n++,a?r.parent=a:delete r.parent,n}function p(t){return l.find(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function F(t,e,n){var i=n.v,s=n.w;e.hasEdge(i,s)||(i=n.w,s=n.v);var r=t.node(i),o=t.node(s),c=r,d=!1;r.lim>o.lim&&(c=o,d=!0);var u=l.filter(e.edges(),(function(e){return d===Z(0,t.node(e.v),c)&&d!==Z(0,t.node(e.w),c)}));return l.minBy(u,(function(t){return a(e,t)}))}function b(t,e,n,i){var a=n.v,s=n.w;t.removeEdge(a,s),t.setEdge(i.v,i.w,{}),m(t),u(t,e),function(t,e){var n=l.find(t.nodes(),(function(t){return!e.node(t).parent})),i=r(t,n);i=i.slice(1),l.forEach(i,(function(n){var l=t.node(n).parent,i=e.edge(n,l),a=!1;i||(i=e.edge(l,n),a=!0),e.node(n).rank=e.node(l).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function Z(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=d,d.initLowLimValues=m,d.initCutValues=u,d.calcCutValue=h,d.leaveEdge=p,d.enterEdge=F,d.exchangeEdges=b},6681:(t,e,n)=>{var l=n(8436);t.exports={longestPath:function(t){var e={};l.forEach(t.sources(),(function n(i){var a=t.node(i);if(l.has(e,i))return a.rank;e[i]=!0;var s=l.min(l.map(t.outEdges(i),(function(e){return n(e.w)-t.edge(e).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),a.rank=s}))},slack:function(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}}},1138:(t,e,n)=>{var l=n(8436),i=n(574).Graph;function a(t,e,n,i){var a;do{a=l.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function s(t){return l.max(l.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!l.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return l.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),l.forEach(t.edges(),(function(n){var l=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:l.weight+i.weight,minlen:Math.max(l.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return l.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),l.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=l.map(t.nodes(),(function(e){var n={};return l.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return l.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=l.map(t.nodes(),(function(e){var n={};return l.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return l.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,l,i=t.x,a=t.y,s=e.x-i,r=e.y-a,o=t.width/2,c=t.height/2;if(!s&&!r)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(r)*o>Math.abs(s)*c?(r<0&&(c=-c),n=c*s/r,l=c):(s<0&&(o=-o),n=o,l=o*r/s),{x:i+n,y:a+l}},buildLayerMatrix:function(t){var e=l.map(l.range(s(t)+1),(function(){return[]}));return l.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;l.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=l.min(l.map(t.nodes(),(function(e){return t.node(e).rank})));l.forEach(t.nodes(),(function(n){var i=t.node(n);l.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=l.min(l.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];l.forEach(t.nodes(),(function(l){var i=t.node(l).rank-e;n[i]||(n[i]=[]),n[i].push(l)}));var i=0,a=t.graph().nodeRankFactor;l.forEach(n,(function(e,n){l.isUndefined(e)&&n%a!=0?--i:i&&l.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,l){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=l),a(t,"border",i,e)},maxRank:s,partition:function(t,e){var n={lhs:[],rhs:[]};return l.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=l.now();try{return e()}finally{console.log(t+" time: "+(l.now()-n)+"ms")}},notime:function(t,e){return e()}}},8177:t=>{t.exports="0.8.5"},7856:function(t){t.exports=function(){var t=Object.hasOwnProperty,e=Object.setPrototypeOf,n=Object.isFrozen,l=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,s=Object.seal,r=Object.create,o="undefined"!=typeof Reflect&&Reflect,c=o.apply,d=o.construct;c||(c=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),s||(s=function(t){return t}),d||(d=function(t,e){return new(Function.prototype.bind.apply(t,[null].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?n-1:0),i=1;i/gm),f=s(/^data-[\-\w.\u00B7-\uFFFF]/),L=s(/^aria-[\-\w]+$/),w=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),x=s(/^(?:\w+script|data):/i),z=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function O(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e0&&void 0!==arguments[0]?arguments[0]:_(),n=function(e){return t(e)};if(n.version="2.3.5",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var l=e.document,i=e.document,s=e.DocumentFragment,r=e.HTMLTemplateElement,o=e.Node,c=e.Element,d=e.NodeFilter,u=e.NamedNodeMap,W=void 0===u?e.NamedNodeMap||e.MozNamedAttrMap:u,K=e.HTMLFormElement,P=e.DOMParser,A=e.trustedTypes,H=c.prototype,q=y(H,"cloneNode"),$=y(H,"nextSibling"),tt=y(H,"childNodes"),et=y(H,"parentNode");if("function"==typeof r){var nt=i.createElement("template");nt.content&&nt.content.ownerDocument&&(i=nt.content.ownerDocument)}var lt=j(A,l),it=lt?lt.createHTML(""):"",at=i,st=at.implementation,rt=at.createNodeIterator,ot=at.createDocumentFragment,ct=at.getElementsByTagName,dt=l.importNode,ut={};try{ut=Q(i).documentMode?i.documentMode:{}}catch(t){}var ht={};n.isSupported="function"==typeof et&&st&&void 0!==st.createHTMLDocument&&9!==ut;var mt=I,Ut=D,pt=f,Ft=L,bt=x,Zt=z,Nt=w,Rt=null,St=V({},[].concat(O(T),O(M),O(g),O(G),O(J))),Wt=null,Vt=V({},[].concat(O(k),O(Y),O(C),O(X))),Qt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),yt=null,Tt=null,Mt=!0,gt=!0,Et=!1,Gt=!1,Bt=!1,Jt=!1,kt=!1,Yt=!1,Ct=!1,Xt=!1,It=!0,Dt=!0,ft=!1,Lt={},wt=null,xt=V({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),zt=null,vt=V({},["audio","video","img","source","image","track"]),Ot=null,_t=V({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),jt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Pt="http://www.w3.org/1999/xhtml",At=Pt,Ht=!1,qt=void 0,$t=["application/xhtml+xml","text/html"],te="text/html",ee=void 0,ne=null,le=i.createElement("form"),ie=function(t){return t instanceof RegExp||t instanceof Function},ae=function(t){ne&&ne===t||(t&&"object"===(void 0===t?"undefined":v(t))||(t={}),t=Q(t),Rt="ALLOWED_TAGS"in t?V({},t.ALLOWED_TAGS):St,Wt="ALLOWED_ATTR"in t?V({},t.ALLOWED_ATTR):Vt,Ot="ADD_URI_SAFE_ATTR"in t?V(Q(_t),t.ADD_URI_SAFE_ATTR):_t,zt="ADD_DATA_URI_TAGS"in t?V(Q(vt),t.ADD_DATA_URI_TAGS):vt,wt="FORBID_CONTENTS"in t?V({},t.FORBID_CONTENTS):xt,yt="FORBID_TAGS"in t?V({},t.FORBID_TAGS):{},Tt="FORBID_ATTR"in t?V({},t.FORBID_ATTR):{},Lt="USE_PROFILES"in t&&t.USE_PROFILES,Mt=!1!==t.ALLOW_ARIA_ATTR,gt=!1!==t.ALLOW_DATA_ATTR,Et=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Gt=t.SAFE_FOR_TEMPLATES||!1,Bt=t.WHOLE_DOCUMENT||!1,Yt=t.RETURN_DOM||!1,Ct=t.RETURN_DOM_FRAGMENT||!1,Xt=t.RETURN_TRUSTED_TYPE||!1,kt=t.FORCE_BODY||!1,It=!1!==t.SANITIZE_DOM,Dt=!1!==t.KEEP_CONTENT,ft=t.IN_PLACE||!1,Nt=t.ALLOWED_URI_REGEXP||Nt,At=t.NAMESPACE||Pt,t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Qt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Qt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Qt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),qt=qt=-1===$t.indexOf(t.PARSER_MEDIA_TYPE)?te:t.PARSER_MEDIA_TYPE,ee="application/xhtml+xml"===qt?function(t){return t}:p,Gt&&(gt=!1),Ct&&(Yt=!0),Lt&&(Rt=V({},[].concat(O(J))),Wt=[],!0===Lt.html&&(V(Rt,T),V(Wt,k)),!0===Lt.svg&&(V(Rt,M),V(Wt,Y),V(Wt,X)),!0===Lt.svgFilters&&(V(Rt,g),V(Wt,Y),V(Wt,X)),!0===Lt.mathMl&&(V(Rt,G),V(Wt,C),V(Wt,X))),t.ADD_TAGS&&(Rt===St&&(Rt=Q(Rt)),V(Rt,t.ADD_TAGS)),t.ADD_ATTR&&(Wt===Vt&&(Wt=Q(Wt)),V(Wt,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&V(Ot,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(wt===xt&&(wt=Q(wt)),V(wt,t.FORBID_CONTENTS)),Dt&&(Rt["#text"]=!0),Bt&&V(Rt,["html","head","body"]),Rt.table&&(V(Rt,["tbody"]),delete yt.tbody),a&&a(t),ne=t)},se=V({},["mi","mo","mn","ms","mtext"]),re=V({},["foreignobject","desc","title","annotation-xml"]),oe=V({},M);V(oe,g),V(oe,E);var ce=V({},G);V(ce,B);var de=function(t){var e=et(t);e&&e.tagName||(e={namespaceURI:Pt,tagName:"template"});var n=p(t.tagName),l=p(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Pt?"svg"===n:e.namespaceURI===jt?"svg"===n&&("annotation-xml"===l||se[l]):Boolean(oe[n]);if(t.namespaceURI===jt)return e.namespaceURI===Pt?"math"===n:e.namespaceURI===Kt?"math"===n&&re[l]:Boolean(ce[n]);if(t.namespaceURI===Pt){if(e.namespaceURI===Kt&&!re[l])return!1;if(e.namespaceURI===jt&&!se[l])return!1;var i=V({},["title","style","font","a","script"]);return!ce[n]&&(i[n]||!oe[n])}return!1},ue=function(t){U(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){try{t.outerHTML=it}catch(e){t.remove()}}},he=function(t,e){try{U(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){U(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!Wt[t])if(Yt||Ct)try{ue(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},me=function(t){var e=void 0,n=void 0;if(kt)t=""+t;else{var l=F(t,/^[\r\n\t ]+/);n=l&&l[0]}"application/xhtml+xml"===qt&&(t=''+t+"");var a=lt?lt.createHTML(t):t;if(At===Pt)try{e=(new P).parseFromString(a,qt)}catch(t){}if(!e||!e.documentElement){e=st.createDocument(At,"template",null);try{e.documentElement.innerHTML=Ht?"":a}catch(t){}}var s=e.body||e.documentElement;return t&&n&&s.insertBefore(i.createTextNode(n),s.childNodes[0]||null),At===Pt?ct.call(e,Bt?"html":"body")[0]:Bt?e.documentElement:s},Ue=function(t){return rt.call(t.ownerDocument||t,t,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT,null,!1)},pe=function(t){return t instanceof K&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof W)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore)},Fe=function(t){return"object"===(void 0===o?"undefined":v(o))?t instanceof o:t&&"object"===(void 0===t?"undefined":v(t))&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},be=function(t,e,l){ht[t]&&h(ht[t],(function(t){t.call(n,e,l,ne)}))},Ze=function(t){var e=void 0;if(be("beforeSanitizeElements",t,null),pe(t))return ue(t),!0;if(F(t.nodeName,/[\u0080-\uFFFF]/))return ue(t),!0;var l=ee(t.nodeName);if(be("uponSanitizeElement",t,{tagName:l,allowedTags:Rt}),!Fe(t.firstElementChild)&&(!Fe(t.content)||!Fe(t.content.firstElementChild))&&R(/<[/\w]/g,t.innerHTML)&&R(/<[/\w]/g,t.textContent))return ue(t),!0;if("select"===l&&R(/